是:
select sum(colA)-sum(colB) from Table与以下相同:
select sum(colA-colB) from Table似乎是这样,但只是检查一下:)
发布于 2014-11-11 13:56:32
是的,它们是不同的:如果,您的数据中有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)。每次在直接计算中使用空值时,计算都将返回空值。
发布于 2014-11-11 13:57:13
不用谢。特别是,它们处理NULL值的方式有所不同。因此,请考虑:
A B
1 NULL
2 2
NULL 2查询:
select sum(colA) - sum(colB) 将返回和(1,2) -和(2,2) = -1
查询:
select sum(colA - colB) 将返回和(NULL,2-2,NULL) = 0。
还有其他微妙的差异,可能是因为数字有范围。例如,一种方法可能超出计算限制并生成错误。或者,十进制数可能存在差异。但是对NULL的处理通常是最大的区别。
https://stackoverflow.com/questions/26866429
复制相似问题