大家好,我想选择帐户名称(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);