当前位置: 代码迷 >> Sql Server >> isnull(sum())和sum(isnull())得到的结果不一样,前面的为0,后面为null,咋回事
  详细解决方案

isnull(sum())和sum(isnull())得到的结果不一样,前面的为0,后面为null,咋回事

热度:508   发布时间:2016-04-24 08:45:15.0
isnull(sum())和sum(isnull())得到的结果不一样,前面的为0,后面为null,怎么回事
select isnull(SUM(mr304b.msrqty),0) from mr304b where 1=2

select SUM(isnull(mr304b.msrqty,0)) from mr304b where 1=2

得到的结果不一样,前面的为0,后面的为null,怎么回事
------解决思路----------------------
因为是where 1=2,结果是一条记录都没有,所以,SUM的结果就是NULL,第一句,就将结果的NULL转换成0;第二句,结果就是NULL了(因为一条记录都没有,所以SUM里面的ISNULL根本就没起作用)。
------解决思路----------------------
前一个语句,是对你的 sum 结果,进行一个 isnull 处理,如果是 null ,则转化成 0 
后者,是对每个参与计算的数值进行 isnull 处理,你这里写的是 where 1=2 ,也就是没什么参与计算的值,sum 会忽略 null 值,最终的结果也会是 null 。
  相关解决方案