Вернуть NULL как ноль из моего запроса SQL Pivot

Я использую SQL Server 2014, и у меня есть сводный запрос, который работает в моей базе данных и работает нормально. Моя проблема в том, что определенные поля имеют NULL в них. Я хочу, чтобы NULL были заменены на ноль.

Мой запрос выглядит следующим образом:

(SELECT [PROPERTYCODE],
        [MARKET FINAL],
        [MARCH 2015],
        [APRIL 2015],
        [MAY 2015]          

FROM (SELECT [PropertyCode],
         [MTH],
         [Room Nights],
         [Market FINAL]

   FROM HOLDINGS2

)m

PIVOT (Sum([ROOM NIGHTS])
     FOR [MTH] IN ([MARCH 2015],
                   [APRIL 2015],
                   [MAY 2015]                      
                    )) AS PVTTABLE)
 ORDER BY [PropertyCode],[Market FINAL]

Вывод выглядит так:

PropertyCode   MarketFinal  March 2015  April 2015    May 2015 

    A            UK           245          NULL          320

Мне нужно, чтобы NULLS были нулями.

Я пробовал это в заявлении Pivot:

PIVOT (Sum(NULLIF[ROOM NIGHTS],0))

Но это не работает. Я также пробовал NULLIF в первом операторе выбора в моем запросе рядом с [МАРТ 2015], [АПРЕЛЬ 2015] И [МАЙ 2015], но он все еще не работает!

1 ответ

Решение

Функция NULLIF вернет 0, если оба выражения равны, поэтому она заменит 0 на ноль в вашем примере.

Посмотрите на функцию ISNULL

(SELECT [PROPERTYCODE],
    [MARKET FINAL],
    [MARCH 2015],
    [APRIL 2015],
    [MAY 2015]          

FROM (SELECT [PropertyCode],
     [MTH],
     isnull([Room Nights] , 0),
     [Market FINAL]

FROM HOLDINGS2

)m

PIVOT (Sum([ROOM NIGHTS])
 FOR [MTH] IN ([MARCH 2015],
               [APRIL 2015],
               [MAY 2015]                      
                )) AS PVTTABLE)
 ORDER BY [PropertyCode],[Market FINAL]
Другие вопросы по тегам