在SQL服务器中总和的情况和总和的情况?

时间:2013-01-23 12:27:39

标签: sql-server sql-server-2008

写作之间有什么区别:

select
...,
mySum= CASE 
           WHEN i  IS NULL THEN 0 ELSE  SUM(i) 
       END  
...

vs

select
...,
mySum=  SUM( CASE WHEN i IS NULL THEN 0  ELSE i
             END
           ) 
...

或者它只是100%相同(逻辑和陷阱...... )?

2 个答案:

答案 0 :(得分:2)

在我的测试数据上,我得到了相同的结果返回,并且几乎完全相同的执行计划:

enter image description here

所有相同的成本,只有两个操作相反。

答案 1 :(得分:1)

我认为逻辑上没有区别。但我认为在这种情况下你不需要检查null为aggregate functions ignore nulls

顺便说一句,您可以使用case简化isnull,如下所示。 (修改:错误地将sum(isnull(i,0))更改为Isnull(sum(i),0)

select Col1, Isnull(sum(i),0) as mySum
from yourTable
group by Col1