[英]DB2 Select with group by and sum based on another column
我有以下情况:
ACCT_TABLE
ID|TYPE|AMT
--+----+---
A |CR | 5
A |DR | 5
B |CR | 2
B |CR | 4
B |DR | 2
B |DR | 2
C |CR | 1
C |CR | 1
我正在尝试构建一个产生以下结果的查询:
DESIRED RESULT
ID|BAL
--+---
A | 0
B | 2
C | 2
ACTUAL RESULT
ID|BAL
--+----
A | -10
B | -8
C | 2
我不确定如何根据TYPE
列中的值对数值进行求和。
我有以下内容:
select id, sum(
case
when
type = 'CR'
then AMT
else -AMT
end
) as BAL
from acct_table
group by id;
我已经在mysql , postgresql , sql-server , oracle中测试了你的查询,它产生了所需的结果。
您的查询
SELECT id
,SUM(CASE WHEN type = 'CR' THEN AMT
ELSE -AMT
END) AS BAL
FROM acct_table
GROUP BY id;
我的查询
SELECT id
,SUM(CASE WHEN type = 'CR' THEN AMT
ELSE ( AMT * -1 )
END) AS BAL
FROM acct_table
GROUP BY id;
oracle测试 - http://sqlfiddle.com/#!4/0b8cb/1
mysql test- http://sqlfiddle.com/#!2/0b8cbd
postgresql测试 - http://sqlfiddle.com/#!15/0b8cb/1
请验证表格中的数据是否与您在问题中显示的数据相符。
我在DB2(9.7 LUW)中测试了一个执行求和的查询,它也有效。
您的查询似乎没有任何问题; 它必须是别的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.