写作之间有什么区别:
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%相同(逻辑和陷阱...... )?
答案 0 :(得分:2)
在我的测试数据上,我得到了相同的结果返回,并且几乎完全相同的执行计划:
所有相同的成本,只有两个操作相反。
答案 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