高分求一sql语句!
现在有这样的个结构的数据表
表一:
单位id 年度 月份 收支分类 收支名称 收支金额
1 2007 1 收入 收入 100000
1 2007 1 工资 工资1 2000
1 2007 1 工资 工资2 2500
1 2007 1 科研支出 科研支出1 20000
1 2007 1 科研支出 科研支出2 15000
1 2007 1 水电费 水电费1 1000
1 2007 1 水电费 水电费1 800
... .... .. ..... ....... .....
表二:单位税额
id 年度 月份 单位id 单位税额
1 2007 1 1 1000
2 2007 1 1 3000
3 2007 1 1 1500
4 2007 1 1 2000
如何将这个两个表组合成下面这样格式的表呢
单位id 年度 月份 收支分类 收支金额 单位税额
1 2007 1 收入 100000 7500
1 2007 1 工资 4500 7500
1 2007 1 科研支出 35000 7500
1 2007 1 水电费 1800 7500
其中“收支分类”中的所对应的“收支金额”是该分类下的所有“收支名称”下的求和。“单位税额”是表二:单位税额中所有项的求和。在组成的新表中“单位税额”这列的所有数据是相同的 。
[解决办法]
create table T1(单位id int,年度 int,月份 int,收支分类 varchar(100),收支名称 varchar(100),收支金额 int)
insert into T1 select 1,2007,1, '收入 ', '收入 ',100000
insert into T1 select 1,2007,1, '工资 ', '工资1 ',2000
insert into T1 select 1,2007,1, '工资 ', '工资2 ',2500
insert into T1 select 1,2007,1, '科研支出 ', '科研支出1 ',20000
insert into T1 select 1,2007,1, '科研支出 ', '科研支出2 ',15000
insert into T1 select 1,2007,1, '水电费 ', '水电费1 ',1000
insert into T1 select 1,2007,1, '水电费 ', '水电费1 ',800
create table T2(id int, 年度 int, 月份 int,单位id int, 单位税额 int)
insert into T2 select 1, 2007, 1, 1, 1000
insert into T2 select 2, 2007, 1, 1, 3000
insert into T2 select 3, 2007, 1, 1, 1500
insert into T2 select 4, 2007, 1, 1, 2000
select 单位id,年度,月份,收支分类,sum(收支金额) as 收支金额,(select sum(单位税额) from T2 where 单位id=a.单位id and 年度=a.年度 and 月份=a.月份) as 单位税额
from T1 as a
group by 单位id,年度,月份,收支分类
drop table T1,T2
/*
单位id 年度 月份 收支分类 收支金额 单位税额
1 2007 1 收入 100000 7500
1 2007 1 工资 4500 7500
1 2007 1 科研支出 35000 7500
1 2007 1 水电费 1800 7500
*/
[解决办法]
---Try
Select A.单位id,A.年度,A.月份,A.收支分类,A.收支金额,B.单位税额
From (Select 单位id,年度,月份,收支分类,Sum(收支金额) As 收支金额
From 表一 Group BY 单位id,年度,月份,收支分类) A,(Select 年度,月份,单位id,Sum(单位税额) As 单位税额
From 表二 Group BY 年度,月份,单位id) B
Where A.单位id=B.单位id And A.年度=B.年度 And A.月份=B.月份