首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL: Sum()与Sum(colA)-sum(colB)

SQL: Sum()与Sum(colA)-sum(colB)
EN

Stack Overflow用户
提问于 2014-11-11 13:50:53
回答 2查看 198关注 0票数 0

是:

代码语言:javascript
复制
select sum(colA)-sum(colB) from Table

与以下相同:

代码语言:javascript
复制
select sum(colA-colB) from Table

似乎是这样,但只是检查一下:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-11 13:56:32

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

代码语言:javascript
复制
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)。每次在直接计算中使用空值时,计算都将返回空值。

票数 3
EN

Stack Overflow用户

发布于 2014-11-11 13:57:13

不用谢。特别是,它们处理NULL值的方式有所不同。因此,请考虑:

代码语言:javascript
复制
A     B
1     NULL
2     2
NULL  2

查询:

代码语言:javascript
复制
select sum(colA) - sum(colB) 

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

查询:

代码语言:javascript
复制
select sum(colA - colB) 

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

还有其他微妙的差异,可能是因为数字有范围。例如,一种方法可能超出计算限制并生成错误。或者,十进制数可能存在差异。但是对NULL的处理通常是最大的区别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26866429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档