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

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

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)


请大家帮看一下我下图需要的结果 这个问题比较麻烦,麻烦大家了



------解决方案--------------------
无图无真相
------解决方案--------------------
结果over掉了。

------解决方案--------------------

------解决方案--------------------
还是没有图片!
------解决方案--------------------
SQL code
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)
;

SELECT a.*,ISNULL(货款金额,0) AS 货款金额, ISNULL(付款款金额,0) AS 付款款金额,ISNULL(欠款金额,0) AS 欠款金额
FROM @wldw AS a 
left JOIN (SELECT a.单位ID,SUM(货款金额) AS 货款金额,SUM(ISNULL(付款款金额,0)) AS 付款款金额,SUM(货款金额-ISNULL(付款款金额,0)) AS 欠款金额  FROM @YSZK AS a LEFT JOIN @FKJL AS b  ON a.单据编号=b.单据编号 GROUP BY a.单位ID)b
    ON a.单位ID=b.单位ID


/*
单位ID    单位名称    科室名称    root    档案文件    单位拼音    货款金额    付款款金额    欠款金额
1    AAAA    AAAA    0    A001    AAAA    400.00    -200.00    600.00
2    AAAA    A1    1    A001    AAAA    100.00    -100.00    200.00
3    AAAA    A2    2    A001    AAAA    200.00    -200.00    400.00
4    BBBB    BBBB    0    B001    BBBB    100.00    0.00    100.00
5    BBBB    B1    1    B001    BBBB    200.00    0.00    200.00
6    BBBB    B2    2    B001    BBBB    0.00    0.00    0.00
7    B