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

请教一个多类别分级汇总的SQL语句

Find_cpa 发布于 2007-08-18 22:13, 1578 次点击

目标说明: 要用一条SQL语句生成各级次的部门对应的各级次支出类别的金额情况:

数据表共涉及三个

1.部门代码表

级次 部门代码 部门名称

1 BM 总部
2 BM01 总部->生产部
2 BM02 总部->财务部

2. 支出类别代码表

级次 支出类别代码 支出类别名称

1 ZC 交通费
2 ZC01 交通费->的士费
2 ZC02 交通费->火车费

3. 支出明细表

部门编码 支出类别编码 支出金额
BM01 ZC01 100
BM01 ZC02 100
BM02 ZC01 100
BM02 ZC02 100

相生成的结果表是:

部门级次 部门编码 支出类别级次 支出类别编码 支出金额
1 BM 1 ZC 200
1 BM 2 ZC01 100
1 BM 2 ZC02 100
2 BM01 1 ZC 200
2 BM01 2 ZC01 100
2 BM01 2 ZC02 100
2 BM02 1 ZC 200
2 BM02 2 ZC01 100
2 BM02 2 ZC02 100

2 回复
#2
Kendy1234562007-08-20 10:55

从你的表结构来看, 很难完成这个功能. 因为你的表结构上看不出 BM是BM01的父代码, ZC是ZC01的父代码.
这种关系如果hard code写进存储过程实在是没什么意义. 而且不具有重复使用价值(你只要添加了新类别就要重新写代码)

在2个代码表里面加一个字段ParentID, 指定它的上级编码; 如果是根, 那么Parent就是Null.
然后用报表工具 (比如Crystal report) 可以很容易的建立报表

#3
xinzheng2007-08-20 13:48
回复:(Find_cpa)请教一个多类别分级汇总的SQL语句
select b.部门编码,a.支出类别级次,b.支出类别编码,b.支出金额 into #1 from 支出类别代码表 a,支出明细表 b where a.支出类别代码=b.支出类别编码
select a.部门级次,b.部门编码,b.支出类别级次,b.支出类别编码,b.支出金额 from 部门代码表 a,#1 b where a.部门代码=b.部门编码
drop table #1
1