如何对SQL查询中的两个字段求和


84

我需要获取同一行内两个字段的总数,并在同一行末尾的字段中输入该数字。

这是我的代码。

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

这是SUM函数的用途,还是只能将SUM函数用于获取列的总和?

谢谢

Answers:


204

SUM是一个聚合函数。它将计算每个组的总数。+用于计算一行中的两列或更多列。

考虑这个例子,

ID  VALUE1  VALUE2
===================
1   1       2
1   2       2
2   3       4
2   4       5

 

SELECT  ID, SUM(VALUE1), SUM(VALUE2)
FROM    tableName
GROUP   BY ID

将导致

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

将导致

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

 

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

将导致

ID, SUM(VALUE1 + VALUE2)
1   7
2   16

10
这个答案并不复杂,但很简单,并根据需要进行了详细介绍。好一个!
Bitterblue 2014年

1
尊敬的约翰,可能是回答这个问题的最好方法!
阿披吉特(Abhijit),


7

SUM用于对多行的一列中的值求和。您可以将列加在一起:

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]

7
ID  VALUE1  VALUE2
===================
1   1       2

1   2       2
2   3       4
2   4       5

select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName

5

由于我的声誉得分低于50,因此我无法对上述E Coder的答案发表评论或投票。这是最好的方法,因此您不必使用组,因为我遇到了类似的问题。
通过执行SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))“总计”,您将获得所需的电话号码,但也可以避免因不执行分组依据而引起的任何错误。这是我的查询,为我提供了每个经销商的总数和总金额,然后为我提供了质量和风险经销商贷款的小计。

SELECT 
    DISTINCT STEP1.DEALER_NBR
    ,COUNT(*) AS DLR_TOT_CNT
    ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
    ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
    ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
    ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
    ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
    FROM STEP1
    WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
        GROUP BY STEP1.DEALER_NBR

4

sum函数仅获取一列的总和。为了对来自不同列的两个值求和,请将这些值转换为int并使用+-运算符将它们加起来

Select (convert(int, col1)+convert(int, col2)) as summed from tbl1

希望能有所帮助。


3

如果您想将两列加在一起,则只需添加它们即可。然后,您将为查询返回的每一行获取这两列的总和。

您的代码正在做的是将两列加在一起,然后求和。那会起作用,但可能并非您要完成的。


3

只是提醒您添加列。如果其中一个值为NULL,则这些列的总和将变为NULL。因此,为什么一些发布者建议合并第二个参数为0的参数

我知道这是一个较旧的帖子,但想添加此内容以保持完整性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.