Is:
select sum(colA)-sum(colB) from Table
同:
select sum(colA-colB) from Table
看起来是这样,但只是检查一下:)
是的,它们是不同的:如果您的数据中有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。
一点也不。特别是,它们对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
的处理通常是最大的区别。