sql-server – SQL Server中的ISNULL(SUM(x),0)或SUM(ISNULL(x,0))之间的区别

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server中的ISNULL(SUM(x),0)或SUM(ISNULL(x,0))之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下哪一项是正确的?
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)的结果列的数据类型不被视为可空.

猜你在找的MsSQL相关文章