1

写作之间有什么区别:

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

对比

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

还是只是 100% 相同(逻辑上和陷阱......)?

4

2 回答 2

3

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

在此处输入图像描述

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

于 2013-01-23T12:38:18.890 回答
1

我认为逻辑上没有区别。但我认为在这种情况下您不需要检查 null,因为聚合函数会忽略 null

case顺便说一句,您可以简化isnull如下。(编辑:错误添加sum(isnull(i,0))更改为Isnull(sum(i),0)

select Col1, Isnull(sum(i),0) as mySum
from yourTable
group by Col1
于 2013-01-23T12:46:56.213 回答