求一个SQL 语句 在线等!
BillExtDetail(收入表)
----------------------------————
cCusCode | gBusiExtract | cInvDep|
---------------------------—————
001 1000 部门1
--------------------------------------
001 200 部门2
-------------------------------------
001 300 部门1
------------------------------------
PayOutItem(支出表)
----------------------------——
cCusCode | outFee | cInvDep|
---------------------------——
001 800 部门1
-------------------------------
001 300 部门3
要求结果:要求结果:要求结果:要求结果:要求结果:要求结果:要求结果:
阐述 1、如果这个部门有收入那么从收入表中汇总并减 得出 剩余总额
2、如果这个部门没有收入数据,那么从汇总显示 得出负数
特别是没有收入数据的
没有收入数据没有收入数据的
部门名称 收入总额 支出总额 剩余总额
————————————————————————————————
部门1 1300 800 500
————————————————————————————————
部门2 200 0 200
----------------------------
部门3 0 300 -300
----------------------------
------解决方案--------------------select
部门名称=a.cInvDep,
收入总额=isnull(b.gBusiExtract,0),
支出总额=isnull(c.outFee,0),
剩余总额=isnull(b.gBusiExtract,0)-isnull(c.outFee,0)
from
(select distinct cInvDep from BillExtDetail
union
select distinct cInvDep from PayOutItem) a
left join
(select cInvDep,sum(gBusiExtract) as gBusiExtract from BillExtDetail group by cInvDep) b
on
a.cInvDep=b.cInvDep
left join
(select cInvDep,sum(outFee) as outFee from PayOutItem group by cInvDep) c
on
a.cInvDep=c.cInvDep
order by
a.cInvDep
------解决方案--------------------create table 收入表( cCusCode varchar(5), gBusiExtract int, cInvDep varchar(5))
insert 收入表 select '001 ', 1000, '部门1 '
union all select '001 ',