读书人

请问怎么进行表连接进行动态汇总统计

发布时间: 2012-01-13 22:43:29 作者: rapoo

请教如何进行表连接进行动态汇总统计
现有两个表
表1,各年度采购情况
含以下字段:部门名称,物品名称,数量,年度
APC 52006
APrinter 12006
AScanner 22006
B PC 82006
BPrinter 22006
CDC 1 2006
CPC 2 2006
......... ...

表2,物品名称,单价,年度
从表1提取物品名称、年度字段,填充本表
Insert into 表2 (名称,年度) Select Distinct 物品名称,年度 From 表1

问题:如何动态提取表1物品名称和年度填充表2,提供用户单价维护界面,将各年度各物品单价存储在表2,再对各部门各年

度采购金额进行汇总。结果表如下:
部门名称 物品名称总额年度
合计 合计 200000 2006
A 合计 40000 2006
A PC30000 2006
A Printer 5000 2006
A Scanner 5000 2006
B 合计 53000 2006
B PC 48000 2006
B Printer 5000 2006
C 合计 15000 2006
C DC 3000 2006
C PC 12000 2006
谢谢指导帮忙!


[解决办法]
create table #table
(
部门名称 varchar(50),
物品名称 varchar(50),
总额 varchar(50),
年度 varchar(50)
)
insert #table
select a.部门名称,a.物品名称,sum(a.数量×b.单价) as 总额,a.年度
from 表1 a inner join 表2 b on a.物品名称=b.物品名称
group by a.部门名称,a.物品名称,a.年度

insert #table
select a.部门名称,'合计',sum(a.数量×b.单价) as 总额,a.年度
from 表1 a inner join 表2 b on a.物品名称=b.物品名称
group by a.部门名称,a.年度

select * from #table
order by 部门名称,年度,总额 desc
[解决办法]

SQL code
select * from(  select 部门名称,物品名称,sum(数量) 总额,年度=@年度 from tb where 年度=@年度 group by 部门名称,物品名称  union all  select 部门名称,物品名称='合计',sum(数量) 总额,年度=@年度 from tb where 年度=@年度 group by 部门名称  union all  select 部门名称='合计',物品名称='合计',sum(数量) 总额,年度=@年度 from tb where 年度=@年度) torder by case 部门名称 when '合计' then 1 else 2 end , case 物品名称 when '合计' then 1 else 2 end 

读书人网 >SQL Server

热点推荐