我陷入了使用 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
我怎样才能在同一个查询中得到我的预期结果?
根据评论中的讨论,我认为您需要
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并将它们连接起来以获得问题中显示的结果。