我需要获取同一行内两个字段的总数,并在同一行末尾的字段中输入该数字。
这是我的代码。
Sum(tbl1.fld1 + tbl1.fld2) AS [Total]
这是SUM函数的用途,还是只能将SUM函数用于获取列的总和?
谢谢
Answers:
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
请尝试以下操作:
SELECT *, (FieldA + FieldB) AS Sum
FROM Table
由于我的声誉得分低于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