我需要得到同一行内的两个字段的总和,并在该行的末尾的字段中输入该数字.
这是我的代码.
Sum(tbl1.fld1 + tbl1.fld2) AS [Total]
Run Code Online (Sandbox Code Playgroud)
这是SUM函数的用途,还是只能使用SUM函数获取列的总数?
谢谢
Joh*_*Woo 163
SUM是一个聚合函数.它将计算每个组的总数.+用于计算一行中的两列或更多列.
考虑这个例子,
ID VALUE1 VALUE2
===================
1 1 2
1 2 2
2 3 4
2 4 5
Run Code Online (Sandbox Code Playgroud)
SELECT ID, SUM(VALUE1), SUM(VALUE2)
FROM tableName
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)
将导致
ID, SUM(VALUE1), SUM(VALUE2)
1 3 4
2 7 9
Run Code Online (Sandbox Code Playgroud)
SELECT ID, VALUE1 + VALUE2
FROM TableName
Run Code Online (Sandbox Code Playgroud)
将导致
ID, VALUE1 + VALUE2
1 3
1 4
2 7
2 9
Run Code Online (Sandbox Code Playgroud)
SELECT ID, SUM(VALUE1 + VALUE2)
FROM tableName
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)
将导致
ID, SUM(VALUE1 + VALUE2)
1 7
2 16
Run Code Online (Sandbox Code Playgroud)
Obl*_*obl 27
请尝试以下方法:
SELECT *, (FieldA + FieldB) AS Sum
FROM Table
Run Code Online (Sandbox Code Playgroud)
小智 8
只是关于添加列的提醒。如果其中一个值为 NULL,则这些列的总数将变为 NULL。因此为什么有些发帖人建议将第二个参数设为 0 进行合并
我知道这是一个较旧的帖子,但为了完整起见,我想添加它。
SUM用于对多行中的值求和.您可以将列添加到一起:
select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 5
由于我的声誉点低于 50,我无法对 E Coder 的上述回答发表评论或投票。这是最好的方法,因此您不必使用 group by,因为我遇到了类似的问题。
通过SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0)))按照 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
Run Code Online (Sandbox Code Playgroud)