一尘不染

添加由 GROUP BY 子句产生的列

sql

我陷入了使用 GROUP BY 后需要从两行添加列的场景中。我的查询如下:

select AcctId,DC,sum(TrnAmt) from TableId
group by AcctId,DC
order by AcctId,DC

结果:

VcrAcctId      DrCr  SumTranAmt
51            C    37469
51      D      37000

我的预期结果是:

VcrAcctId      Actual
51     37469-37000

我怎样才能在同一个查询中得到我的预期结果?


阅读 147

收藏
2021-05-30

共1个答案

一尘不染

根据评论中的讨论,我认为您需要

SELECT AcctId,
       Sum(CASE DC
             WHEN 'C' THEN TrnAmt
             WHEN 'D' THEN -TrnAmt
             ELSE 0
           END) AS DC
FROM   TableId
GROUP  BY AcctId
ORDER  BY AcctId 

如果实际上您确实希望将贷方和借方分开,则可以使用

SELECT AcctId,
       Sum(CASE
             WHEN DC = 'C' THEN TrnAmt
             ELSE 0
           END) AS C,
       Sum(CASE
             WHEN DC = 'D' THEN TrnAmt
             ELSE 0
           END) AS D
FROM   TableId
GROUP  BY AcctId
ORDER  BY AcctId 

如果这是实际需要的,您可以将SUM表达式转换为varchar并将它们连接起来以获得问题中显示的结果。

2021-05-30