有SQL如下,查询到按客户分类汇总的应收余额:
--找到按客户分类汇总的应收余额
Select ar.customer_id
,ar.customer_name
,Sum(nvl(ar.amount,0)-nvl(rev_b.rev_amount,0)) remaining --应收余额
From
--找到每张发票的应收金额
(Select a.customer_num customer_id --客户ID
,a.customer_name customer_name --客户名称
,a.trx_id id --发票ID
,a_line.amount amount --发票应收金额
,a.due_date due_date --到期日
From Trx a --发票头表
,trx_line a_line --发票行表
Where a.id=a_line.id
And a_line.account_class='REC'
) ar,
--找到按发票ID分类汇总的已收款金额
(Select rev.applied_trx_id ap_id --关联发票ID
,sum(rev.amount_applied) rev_amount --收款金额
From rev
Where rev.status='APP'
Group By rev.applied_trx_id) rev_bWhere ar.id=rev_b.ap_id(+)
Group By ar.customer_id,ar.customer_name现每张发票对应收入部门,SQL如下:
Select a_line.trx_id id –发票ID
,code.segment2 seg --部门
From trx_line a_line --发票行表
,code_combinations code --部门表
Where a_line.account_class='REV'
And a_line.code_combination_id=code.code_combination_id
Order By id需用PL/SQL输出每个客户的应收余额,和每个部门的应收余额,即
应收余额
A客户
B客户
部门1汇总
C客户
D客户
部门2汇总 上面的SQL我准备使用游标可以输出每个客户的应收款,但是想不出如何输出对应部门汇总的应收款,请哪位大侠能帮忙看看是可以使用SQL直接实现还是需用PL/SQL循环实现?用循环该如何做,谢谢!
--找到按客户分类汇总的应收余额
Select ar.customer_id
,ar.customer_name
,Sum(nvl(ar.amount,0)-nvl(rev_b.rev_amount,0)) remaining --应收余额
From
--找到每张发票的应收金额
(Select a.customer_num customer_id --客户ID
,a.customer_name customer_name --客户名称
,a.trx_id id --发票ID
,a_line.amount amount --发票应收金额
,a.due_date due_date --到期日
From Trx a --发票头表
,trx_line a_line --发票行表
Where a.id=a_line.id
And a_line.account_class='REC'
) ar,
--找到按发票ID分类汇总的已收款金额
(Select rev.applied_trx_id ap_id --关联发票ID
,sum(rev.amount_applied) rev_amount --收款金额
From rev
Where rev.status='APP'
Group By rev.applied_trx_id) rev_bWhere ar.id=rev_b.ap_id(+)
Group By ar.customer_id,ar.customer_name现每张发票对应收入部门,SQL如下:
Select a_line.trx_id id –发票ID
,code.segment2 seg --部门
From trx_line a_line --发票行表
,code_combinations code --部门表
Where a_line.account_class='REV'
And a_line.code_combination_id=code.code_combination_id
Order By id需用PL/SQL输出每个客户的应收余额,和每个部门的应收余额,即
应收余额
A客户
B客户
部门1汇总
C客户
D客户
部门2汇总 上面的SQL我准备使用游标可以输出每个客户的应收款,但是想不出如何输出对应部门汇总的应收款,请哪位大侠能帮忙看看是可以使用SQL直接实现还是需用PL/SQL循环实现?用循环该如何做,谢谢!
然后再用rollup可以实现部门汇总
详细google下rollup的用用法就行了group by rollup(部门),客户
应收余额
A客户 100
B客户 200
部门1 300但是使用rollup后输出格式为
应收余额
部门1 A客户 100
部门1 B客户 200
部门1 300列无法对应列出输出呀,而且SQL出来后排序就是如此吗,部门对应客户汇总后跟着就是部门汇总?
高手能否有办法处理?或者在PL/SQL里面程序实现?
请再次赐教,谢谢!