根据父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


 

原文地址:https://www.cnblogs.com/dingdingmao/p/3146531.html