写作之间有什么区别:
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% 相同(逻辑上和陷阱......)?
写作之间有什么区别:
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% 相同(逻辑上和陷阱......)?
在我的测试数据上,我得到了相同的结果,并且执行计划几乎相同:
所有相同的成本,只是两个操作相反。
我认为逻辑上没有区别。但我认为在这种情况下您不需要检查 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