电池活化剂配方:sql 分类汇总

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 21:22:27
例如有如下的表
科目编号 科目余额
01
0101
010101 10.20
010102 11.00
0102
010201 13.22
010202 14.10
010203 15.22
0103
010301 16.33
010302 17.26
0104

02
0201
020101 18.22
020102 15.22
0202
020201 17.00
020202 11.48

03
0301
030101 13.55

01表示一级科目
0101表示二级科目
010101表示三级科目
只有三级科目有金额
怎样把三级科目汇总到二级科目,在把二级科目汇总到一级科目
最后的结果如下
科目 金额
01 ???//(0101+0102+0103+0104)
0101 ???//(010101+010102)
0102 ???
0103 ???
0104 ???
02 ???
0201 ???
0202 ???
03 ???
0301 ???

select * from(
select 科目编码,(select sum(科目余额) from kemu where 科目编码 like a.科目编码+'%') 科目余额 from 科目表 a where len(a.科目编码)=2
union all
select 科目编码,(select sum(科目余额) from kemu where 科目编码 like a.科目编码+'%') 科目余额 from 科目表 a where len(a.科目编码)=4
) a
order by 科目编码

我只能写成这样,不知道哪位有更简洁的方法?