时:
select sum(colA)-sum(colB) from Table
与:
相同select sum(colA-colB) from Table
似乎如此,但只是检查:)
答案 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的处理通常是最大的区别。