2015-08-04 3 views
0

Мне нужно некоторое руководство с динамическим поворотом в SQL SEVER 2012. Я смог успешно свернуть данные так, как хотел, но в конечном выпуске я вижу NULL ,Преобразование NULL в пустую строку в SQL SERVER 2012

Цель

Я хотел бы, чтобы эти NULL значения вместо показаны как пробелы.

Ниже приведен пример того, что мое выглядит в финале.

========================================================= 
Week  Type  kawasaki Aston Martin 
========================================================= 
52  Two Wheel  2    NULL 
52  Four Wheel  NULL   10 

Первая попытка Код

Мой главный набор данных в таблице #temp я использую для динамического процесса поворота. Кавасаки и Астон Мартин - «Модель».

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX) 
    DECLARE @ColumnName AS NVARCHAR(MAX) 


--Get distinct values of the PIVOT Column 
    SELECT @ColumnName=ISNULL(@ColumnName + ',','') 
          + QUOTENAME(Model) 
    FROM (SELECT DISTINCT Model FROM #Temp) AS Courses 

    --Prepare the PIVOT query using the dynamic 
    SET @DynamicPivotQuery = 
     N'SELECT Week,Type,' + @ColumnName + ' 
     FROM (Select Sold,Week,Type,Model from #temp) src 
      PIVOT(
        SUM(ISNULL(Sold),0) 
         FOR Model IN (' + @ColumnName + ')) AS PVT' 
    --Execute the Dynamic Pivot Query 

      EXECUTE sp_executesql @DynamicPivotQuery; 

С выше коде, я сделал первую наивную попытку, используя ISNULL в моем SUM агрегат, который не работает.

Вопрос в том, как я могу преобразовать NULL в пробелы?

Возможно, этот вопрос может помочь другим людям в моей ситуации, как преобразовать NULL в 0 (Zero)?

Заключительный пример вывода:

========================================================= 
Week  Type  kawasaki Aston Martin 
========================================================= 
52  Two Wheel  2    Blank 
52  Four Wheel  Blank   10 

Ваша помощь будет очень высокую оценку.

+0

Попробуйте использовать 'REPLACE' или' CASE'. –

+1

Попробуйте использовать [COALESCE] (https://msdn.microsoft.com/en-au/library/ms190349.aspx). SUM (COALESCE (продано, 0)) –

+0

Это проблема с презентацией, которая лучше обрабатывается инструментом отчетности. выводит ли вывод непосредственно конечному пользователю? есть ли уровень представления? – Paolo

ответ

-1

, если вы хотите, чтобы преобразовать нуль в 0, то есть функция

выберите NVL (столбец 0) из таблицы;

0
SELECT Week, Type, ISNULL(kawasaki , 'blanks') 
    AS kawasaki , ISNULL([Aston Martin], 'blanks') AS AstonMartin 
    FROM tablename 
+0

Я пробовал работать над @ColumnName, которая является «моделью», однако я не могу заставить ее работать. Ваше решение подходит только для двух моделей, однако, если бы у меня было 10 моделей, тогда это не будет хорошим решением. – user3197575

Смежные вопросы