SQL:Sum(colA-colB)vs Sum(colA)-sum(colB)

时间:2014-11-11 13:50:54

标签: sql sql-server

时:

select sum(colA)-sum(colB) from Table

与:

相同
select sum(colA-colB) from Table

似乎如此,但只是检查:)

2 个答案:

答案 0 :(得分:3)

是的,它们不同:如果您的数据中有NULLs。请考虑以下事项:

DECLARE @TestTable TABLE (ID INT IDENTITY(1,1), ColA INT, ColB INT)
INSERT INTO @TestTable (ColA, ColB) VALUES (5,2)
INSERT INTO @TestTable (ColA, ColB) VALUES (5,NULL)
INSERT INTO @TestTable (ColA, ColB) VALUES (NULL,2)


SELECT SUM(ColA) - SUM(ColB) FROM @TestTable 
SELECT SUM(ColA - ColB) FROM @TestTable

第一个查询将返回6(10 - 4),而第二个查询将返回3(5-2加5-NULL加NULL-2)。每次在直接计算中使用NULL值时,计算将返回NULL。

答案 1 :(得分:2)

完全没有。特别是,它们以不同的方式处理NULL值。所以,请考虑:

A     B
1     NULL
2     2
NULL  2

查询:

select sum(colA) - sum(colB) 

将返回SUM(1,2) - SUM(2,2)= -1

查询:

select sum(colA - colB) 

将返回SUM(NULL,2-2,NULL)= 0。

由于数字具有范围,可能会出现其他细微差别。例如,一种方法可能超出计算限制并产生错误。或者,十进制数字可能有差异。但NULL s的处理通常是最大的区别。