大家好,我想选择帐户名称(stat_leger),从stat_leger列中的总借方(其中stat_flag列= d)和从stat_leger中的总贷方,在其中stat_flag列= c并按stat_leger分组,我需要像这样的列

Account Name(stat_leger) |  total debit |  total credit
                         |              |
     acc1                |      20      |    0.00
     acc2                |      30      |    15
     acc3                |      40      |     20


我试过了

select DISTINCT stat_leger , sum(stat_amount) as deb
from PostedVoucher
where branch='1' and stat_flag ='c' group by stat_leger

union

select  DISTINCT stat_leger , sum(stat_amount) as cred
from PostedVoucher
where branch='1' and stat_flag ='d' group by stat_leger


但它会像这样在同一列deb中返回总借方和贷方

Account Name(stat_leger) |     deb
     acc1                |     0.00
     acc1                |      20
     acc2                |      15
     acc2                |      30
     acc3                |      40
     acc3                |      20


当我尝试

 select  stat_leger ,
 ( select sum(stat_amount) as deb  where stat_flag ='c'   )
 from PostedVoucher
  where branch='1'  group by (stat_leger);


但它返回错误
选择列表中的“ PostedVoucher.stat_flag”列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

最佳答案

我认为不需要子查询。您可以在主WHERE子句中添加where条件。检查以下查询:

尝试这个:

SELECT stat_leger, SUM(stat_amount)
FROM PostedVoucher
WHERE branch='1' AND stat_flag ='c'
GROUP BY (stat_leger);

10-04 19:20