从我的SQL Pivot查询返回NULL为零

时间:2015-03-09 09:44:29

标签: sql-server null pivot

我正在使用SQL Server 2014,我有一个在我的数据库上运行的Pivot查询,并且工作正常。我的问题是某些字段中包含NULL。我想将NULLS替换为零。

我的查询如下:

(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))

但它不起作用。我还在[2015年3月],[2015年4月]和[2015年5月]旁边的查询的第一个select语句中尝试了NULLIF,但它仍然无效!

1 个答案:

答案 0 :(得分:1)

如果两个表达式相等,NULLIF函数将返回0,因此它将在示例中将0替换为null。

查看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]