ISNULL当我计算函数的表达式部分中两列的总和时不起作用

时间:2018-11-05 17:50:28

标签: sql-server

我正在尝试使用ISNULL (),但是在函数的表达式部分,我没有四列的总和,而是将四列的总和作为参数,并且当所有列中的值为NULL,否则为总和。例如,如果三列具有值,而另一列中的对应值是Null,则它仍应返回这三个值的总和。这就是我编写查询的方式:

Select ISNULL([FY18 P1]+[FY18 P2]+[FY18 P3]+[FY18 P4],0) as [Previous YTD]
from TableA 

ISNULL函数内部的此计算列不起作用。谁能帮我重写这个表达式,以便它起作用。我的意思是当它不起作用时,当只有一列为NULL但其余列具有值时,它将返回NULL。基本上,在这种情况下,它应该返回总和而不是NULL。

1 个答案:

答案 0 :(得分:1)

如果串联IS NULL中有任何列,则结果将为NULL

您需要将IS NULL中的每一列换行以使该列的值为0,以便您的加法运算不会返回NULL

SELECT ISNULL([FY18 P1],0) +ISNULL([FY18 P2],0) + ISNULL([FY18 P3],0) + ISNULL([FY18 P4],0) 

这是因为任何 + NULL返回NULL

select 1 + 2 + 3 + NULL --returns `NULL`