110

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

这是我的代码。

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

这是 SUM 函数的用途,还是只能使用 SUM 函数来获取列的总数?

谢谢

4

8 回答 8

265

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
于 2013-02-14T15:08:52.997 回答
40

尝试以下操作:

SELECT *, (FieldA + FieldB) AS Sum
FROM Table
于 2013-02-14T15:08:53.433 回答
13

只是一个关于添加列的提醒。如果其中一个值为 NULL,则这些列的总数变为 NULL。因此,为什么有些发帖人建议将第二个参数设为 0 时合并

我知道这是一篇较旧的帖子,但为了完整起见,我想添加它。

于 2019-04-19T14:47:45.647 回答
10
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
于 2015-02-17T11:20:50.460 回答
7

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

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
于 2013-02-14T15:08:42.010 回答
5

由于我的声誉点低于 50,我无法评论或投票支持 E Coder 的上述答案。这是最好的方法,因此您不必使用 group by,因为我遇到了类似的问题。
通过SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))as Total 这将为您提供您想要的数字,但也可以消除您不执行 Group By 的任何错误。这是我的查询,给了我每个经销商的总数和总金额,然后给了我质量和风险经销商贷款的小计。

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
于 2016-02-11T15:34:47.380 回答
4

sum 函数只获取一列的总数。为了对来自不同列的两个值求和,请将值转换为 int 并使用 +-Operator 将它们相加

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

希望有帮助。

于 2013-02-14T15:10:54.460 回答
3

如果您想将两列添加在一起,您所要做的就是添加它们。然后,您将获得查询返回的每一行的这两列的总和。

您的代码正在做的是将两列加在一起,然后得到总和的总和。这会起作用,但它可能不是你想要完成的。

于 2013-02-14T15:11:19.103 回答