Вернуть 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]