日期:2014-05-18  浏览次数:20359 次

求一个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 ',