注册 登录
编程论坛 SQL Server论坛

再请教各位一个分组统计问题,谢谢!

qinyun 发布于 2011-04-03 14:06, 687 次点击
程序代码:
DECLARE @wldw TABLE (单位ID int, 单位名称 nvarchar(11), 科室名称 nvarchar(10), root int, 档案文件 nvarchar(10), 单位拼音 nvarchar(10))

INSERT @wldw VALUES(1,'AAAA','AAAA','0','A001','AAAA')
INSERT @wldw VALUES(2,'AAAA','A1','1','A001','AAAA')
INSERT @wldw VALUES(3,'AAAA','A2','2','A001','AAAA')
INSERT @wldw VALUES(4,'BBBB','BBBB','0','B001','BBBB')
INSERT @wldw VALUES(5,'BBBB','B1','1','B001','BBBB')
INSERT @wldw VALUES(6,'BBBB','B2','2','B001','BBBB')
INSERT @wldw VALUES(7,'BBBB','B3','3','B001','BBBB')



DECLARE @YSZK TABLE (FID int,单据编号 nvarchar(11), 单位ID int, 货款金额 money)

INSERT @YSZK VALUES(1,'20110403001','1',100)
INSERT @YSZK VALUES(2,'20110403002','1',100)
INSERT @YSZK VALUES(3,'20110403003','2',100)
INSERT @YSZK VALUES(4,'20110403004','3',100)
INSERT @YSZK VALUES(5,'20110403005','3',100)
INSERT @YSZK VALUES(6,'20110403006','5',100)
INSERT @YSZK VALUES(7,'20110403007','4',100)
INSERT @YSZK VALUES(8,'20110403008','5',100)


DECLARE @FKJL TABLE (FID int,单据编号 nvarchar(11), 付款款金额 money)

INSERT @FKJL VALUES(1,'20110403001',-50)
INSERT @FKJL VALUES(2,'20110403002',-100)
INSERT @FKJL VALUES(3,'20110403003',-100)
INSERT @FKJL VALUES(4,'20110403004',-100)
INSERT @FKJL VALUES(5,'20110403005',-100)
INSERT @FKJL VALUES(6,'20110403001',-20)
INSERT @FKJL VALUES(7,'20110403002',-30)
请大家帮看一下我下图需要的结果 这个问题比较麻烦,麻烦大家了
只有本站会员才能查看附件,请 登录
5 回复
#2
qinyun2011-04-03 15:42
这个问题有点麻烦,请大家帮看一下
#3
qinyun2011-04-03 22:41
回复 2楼 qinyun
高手有时间吗,请帮个忙分析分析吧
#4
panyanpan2011-04-06 01:55
一句sql  我搞不定
建议用存储过程做
#5
qingshuiliu2011-04-10 11:06
做个参考,希望能帮助到你:
select w.[单位ID],w.[单位名称] ,w.[科室名称]  ,w.[root] ,w.[档案文件] ,w.[单位拼音]
      ,t2.货款金额  ,t2.付款款金额
      ,(cast(t2.货款金额 as int)+CAST(t2.付款款金额 as int)) as 合计
      from dbo.wldw w,
      (
        select  y.单位ID as 单位ID,y.货款金额 货款金额,t1.付款款金额 from dbo.YSZK y,
        ( select 单据编号,sum(付款款金额) as 付款款金额 from dbo.FKJL group by 单据编号) as t1
        where y.单据编号=t1.单据编号
       ) as t2
       where w.单位ID=t2.单位ID
#6
aei1352011-04-20 14:05
select wldw.单位ID, 单位名称, 科室名称, root, 档案文件, 单位拼音,sum(货款金额) 货款金额,
(SELECT sum(付款款金额) FROM FKJL  inner join YSZK on FKJL.单据编号=YSZK.单据编号  where YSZK.单位ID=wldw.单位ID) 付款款金额
into #temp
from wldw left join YSZK on wldw.单位ID=YSZK.单位ID
GROUP BY wldw.单位ID, 单位名称, 科室名称, root, 档案文件, 单位拼音

select 单位ID, #temp.单位名称, 科室名称, root, 档案文件, 单位拼音,isnull(case when root=0 then x.贷款金额 else #temp.货款金额 end,0) 货款金额,
isnull(case when root=0 then x.付款款金额 else #temp.付款款金额 end,0) 付款款金额,
isnull(case when root=0 then x.贷款金额 else #temp.货款金额 end,0)+isnull(case when root=0 then x.付款款金额 else #temp.付款款金额 end,0) 欠款金额
from #temp inner join
(select 单位名称,sum(货款金额) 贷款金额,sum(付款款金额) 付款款金额
from #temp group by 单位名称) x
on #temp.单位名称=x.单位名称
1