17,377
社区成员
发帖
与我相关
我的任务
分享
create table test(
NAME varchar2(20), P_NAME varchar2(20), NUM int);
insert into test values('a','-1',3 );
insert into test values('b','-1',4 );
insert into test values('c','a',5 );
insert into test values('d','b',6 );
insert into test values('e','c',7 );
insert into test values('f','d',8 );
insert into test values('g','e',9 );
COMMIT;
SELECT NAME, P_NAME, SUM(NUM) num
FROM (SELECT NUM, CONNECT_BY_ROOT NAME NAME, CONNECT_BY_ROOT P_NAME P_NAME
FROM TEST S
CONNECT BY PRIOR NAME = P_NAME
START WITH P_NAME = '-1')
GROUP BY NAME, P_NAME;
输出:
NAME P_NAME NUM
b -1 18
a -1 24
[Quote=引用楼主 sunjie001109 的帖子:]
select
NAME,P_NAME,
(select sum(NUM) from t connect by P_NAME = prior NAME start with NAME= t0.NAME) NUM
from
t t0
where
P_NAME=-1;