|
|
with tt AS(
SELECT 0 ID, NULL PID , 1 NUM FROM DUAL UNION ALL
SELECT 1 ID, 0 PID ,2 NUM FROM DUAL UNION ALL
SELECT 2 ID, 1 PID ,2 NUM FROM DUAL UNION ALL
SELECT 3 ID, 2 PID ,2 NUM FROM DUAL UNION ALL
SELECT 4 ID, 3 PID ,2 NUM FROM DUAL UNION ALL
SELECT 22 ID, 1 PID ,3 NUM FROM DUAL UNION ALL
SELECT 33 ID, 22 PID ,3 NUM FROM DUAL UNION ALL
SELECT 44 ID, 33 PID ,3 NUM FROM DUAL )
SELECT a.id,a.pid,a.num,DBMS_AW.eval_number(substr(sys_connect_by_path(a.num,'*'),2,10))num_all
FROM TT A
start with a.pid is null
connect by prior a.id=a.pid
; |
|