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

我需要得到同一行中的两个字段的总和,然后将这个数字输入到同一行末尾的一个字段中。

这是我的原则。

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

这是使用 SUM 函数的目的吗? 还是只能使用 SUM 函数来获取列的总和?

谢谢

989922 次浏览

SUM 用于对多行的列中的值进行求和。只需将列相加即可:

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

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

Try the following:

SELECT *, (FieldA + FieldB) AS Sum
FROM Table

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

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

希望能帮上忙。

如果要将两列添加到一起,只需将它们添加到一起即可。然后,您将得到查询返回的每一行的这两列之和。

What your code is doing is adding the two columns together and then getting a sum of the sums. That will work, but it might not be what you are attempting to accomplish.

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

由于我的声誉点不到50,我不能评论或投票给 E 编码器的答案以上。这是最好的方式做到这一点,所以你不必使用该组,因为我有一个类似的问题。
通过使用 SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))作为 Total,可以得到您想要的数字,但是也可以消除不执行 GroupBy 的错误。 这是我的查询,给我一个总计数和总金额的每个经销商,然后给我一个小计的质量和风险经销商贷款。

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

Just a reminder on adding columns. If one of the values is NULL the total of those columns becomes NULL. Thus why some posters have recommended coalesce with the second parameter being 0

我知道这是一个较老的职位,但想添加这个完整性。

注:
Better to use ISNULL() than COALESCE() if true/false is to be the result.
Also NULLIF() is useful.