根据父ID聚合

create table myTest_tt ( id int identity(1,1), EID varchar(20), BID varchar(20), [name] varchar(30), [value] int ) go insert into myTest_tt select '10000001','101','一般性公共服务',0 union select '10000001','101031','一般性公共服务1',100 union select '10000001','10103101','一般性公共服务1-1',100 union select '10000001','10103102','一般性公共服务1-2',100 union select '10000001','101032','一般性公共服务2',200 union select '10000001','10103201','一般性公共服务2-1',300 union select '10000001','10103202','一般性公共服务2-2',100 union select '10000001','101033','一般性公共服务3',300 union select '10000001','10103301','一般性公共服务3-1',300 union select '10000001','10103302','一般性公共服务3-2',300 insert into myTest_tt select '10000002','201','一般性公共服务',0 union select '10000002','201031','一般性公共服务1',100 union select '10000002','20103101','一般性公共服务1-1',100 union select '10000002','20103102','一般性公共服务1-2',100 union select '10000002','201032','一般性公共服务2',200 union select '10000002','20103201','一般性公共服务2-1',300 union select '10000002','20103202','一般性公共服务2-2',100 union select '10000002','201033','一般性公共服务3',300 union select '10000002','20103301','一般性公共服务3-1',300 union select '10000002','20103302','一般性公共服务3-2',300 go

id EID BID name value
----------- -------------------- -------------------- ------------------------------ -----------
1 10000001 101 一般性公共服务 0
2 10000001 101031 一般性公共服务1 100
3 10000001 10103101 一般性公共服务1-1 100
4 10000001 10103102 一般性公共服务1-2 100
5 10000001 101032 一般性公共服务2 200
6 10000001 10103201 一般性公共服务2-1 300
7 10000001 10103202 一般性公共服务2-2 100
8 10000001 101033 一般性公共服务3 300
9 10000001 10103301 一般性公共服务3-1 300
10 10000001 10103302 一般性公共服务3-2 300
11 10000002 201 一般性公共服务 0
12 10000002 201031 一般性公共服务1 100
13 10000002 20103101 一般性公共服务1-1 100
14 10000002 20103102 一般性公共服务1-2 100
15 10000002 201032 一般性公共服务2 200
16 10000002 20103201 一般性公共服务2-1 300
17 10000002 20103202 一般性公共服务2-2 100
18 10000002 201033 一般性公共服务3 300
19 10000002 20103301 一般性公共服务3-1 300
20 10000002 20103302 一般性公共服务3-2 300

需要按照父级包含的进行合并

例如 BID=101=所有前3位为101的value的sum

201031=201031+20103101+20103102=300

select a.EID AEID,A.bid ABID,max(A.name), sum(b.VALUE) BVALUE from myTest_tt a,myTest_tt b where b.bid like a.bid+'%' and a.EID=b.eid group by A.BID,A.EID select a.EID AEID,A.bid ABID,max(A.name), sum(b.VALUE) BVALUE from myTest_tt a inner join myTest_tt b on b.bid like a.bid+'%' and a.EID=b.eid group by A.BID,A.EID


结果表示如下:

AEID ABID BVALUE
-------------------- -------------------- ------------------------------ -----------
10000001 101 一般性公共服务 1800
10000001 101031 一般性公共服务1 300
10000001 10103101 一般性公共服务1-1 100
10000001 10103102 一般性公共服务1-2 100
10000001 101032 一般性公共服务2 600
10000001 10103201 一般性公共服务2-1 300
10000001 10103202 一般性公共服务2-2 100
10000001 101033 一般性公共服务3 900
10000001 10103301 一般性公共服务3-1 300
10000001 10103302 一般性公共服务3-2 300
10000002 201 一般性公共服务 1800
10000002 201031 一般性公共服务1 300
10000002 20103101 一般性公共服务1-1 100
10000002 20103102 一般性公共服务1-2 100
10000002 201032 一般性公共服务2 600
10000002 20103201 一般性公共服务2-1 300
10000002 20103202 一般性公共服务2-2 100
10000002 201033 一般性公共服务3 900
10000002 20103301 一般性公共服务3-1 300
10000002 20103302 一般性公共服务3-2 300


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值