create table #项目
(
id int not null,
名称 char(64) not null
)
insert into #项目 values(1, '本月数')
insert into #项目 values(2, '本年累计数')
insert into #项目 values(3, '上年同期数')
insert into #项目 values(4, '增长率(%)')create table #分公司
(
编号 char(16) not null,
名称 char(64) not null,
)
insert into #分公司 values('101', '上海')
insert into #分公司 values('102', '北京')
insert into #分公司 values('103', '深圳')
create table #月报表主表
(
id char(16) not null,
名称 char(64) not null,
时间 datetime not null
)
insert into #月报表主表 values('200401-101', '上海分公司的月报表', '2004-01-09')
insert into #月报表主表 values('200401-102', '北京分公司的月报表', '2004-01-10')
insert into #月报表主表 values('200401-103', '深圳分公司的月报表', '2004-01-06')
create table #月报表从表
(
月报表id char(16) not null,
项目id int not null,
值 numeric(19,6) not null
)
insert into #月报表从表 values('200401-101', 1, 100)
insert into #月报表从表 values('200401-101', 2, 100)
insert into #月报表从表 values('200401-101', 3, 80)
insert into #月报表从表 values('200401-101', 4, 0.25)
insert into #月报表从表 values('200401-102', 1, 10)
insert into #月报表从表 values('200401-102', 2, 10)
insert into #月报表从表 values('200401-102', 3, 8)
insert into #月报表从表 values('200401-102', 4, 0.25)
insert into #月报表从表 values('200401-103', 1, 150)
insert into #月报表从表 values('200401-103', 2, 150)
insert into #月报表从表 values('200401-103', 3, 100)
insert into #月报表从表 values('200401-103', 4, 0.5)
goselect b.名称, 
sum(case when c.名称='上海' then a.值 else 0 end) 上海,
sum(case when c.名称='北京' then a.值 else 0 end) 北京,
sum(case when c.名称='深圳' then a.值 else 0 end) 深圳,
sum(a.值) 合计
from #月报表从表 a, #项目 b, #分公司 c
where a.项目id=b.id and right(rtrim(a.月报表id),3)=c.编号
group by b.名称