繁体   English   中英

DB2选择group by和sum基于另一列

[英]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;

我已经在测试了你的查询,它产生了所需的结果。

您的查询

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;

测试 - http://sqlfiddle.com/#!4/0b8cb/1

test- http://sqlfiddle.com/#!2/0b8cbd

测试 - http://sqlfiddle.com/#!15/0b8cb/1

请验证表格中的数据是否与您在问题中显示的数据相符。

我在DB2(9.7 LUW)中测试了一个执行求和的查询,它也有效。

您的查询似乎没有任何问题; 它必须是别的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM