以下哪一项是正确的?
SUM(ISNULL(Sales,0)) AS Sales,ISNULL(SUM(Sales),0) AS Sales,
还是他们都是正确的?
解决方法
它们都返回相同的,除非您在空结果集上运行查询.
WITH Sales(Sales) AS ( SELECT 1 ) SELECT SUM(ISNULL(Sales,0) AS Sales FROM Sales WHERE 1=0
返回
Sales Sales ----------- ----------- NULL 0
SUM(ISNULL(Sales,0))版本将避免ANSI WARNINGS关于聚合NULL.
另一个微妙的区别是ISNULL(SUM(Sales),0)的结果列的数据类型不被视为可空.