加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

根据父ID聚合

发布时间:2020-12-13 20:16:10 所属栏目:百科 来源:网络整理
导读:create table myTest_tt(id int identity(1,1),EID varchar(20),BID varchar(20),[name] varchar(30),[value] int)goinsert into myTest_tt select '10000001','101','一般性公共服务',0union select '10000001','101031','一般性公共服务1',100union select
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','10103102','一般性公共服务1-2','101032','一般性公共服务2',200
union select '10000001','10103201','一般性公共服务2-1',300
union select '10000001','10103202','一般性公共服务2-2','101033','一般性公共服务3','10103301','一般性公共服务3-1','10103302','一般性公共服务3-2',300

insert into myTest_tt
	  select '10000002','201',0
union select '10000002','201031',100
union select '10000002','20103101','20103102','201032',200
union select '10000002','20103201',300
union select '10000002','20103202','201033','20103301','20103302',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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读