我正在尝试使用ISNULL ()
,但是在函数的表达式部分,我没有四列的总和,而是将四列的总和作为参数,并且当所有列中的值为NULL,否则为总和。例如,如果三列具有值,而另一列中的对应值是Null,则它仍应返回这三个值的总和。这就是我编写查询的方式:
Select ISNULL([FY18 P1]+[FY18 P2]+[FY18 P3]+[FY18 P4],0) as [Previous YTD]
from TableA
ISNULL函数内部的此计算列不起作用。谁能帮我重写这个表达式,以便它起作用。我的意思是当它不起作用时,当只有一列为NULL但其余列具有值时,它将返回NULL。基本上,在这种情况下,它应该返回总和而不是NULL。
答案 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`