add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
CREATE TABLE table_name ("order", part, sn) AS
SELECT 'aa-1', 'A1', '112233' FROM DUAL UNION ALL
SELECT 'aa-1', 'A2', '112234' FROM DUAL UNION ALL
SELECT 'aa-1', 'B1', 'bb-1' FROM DUAL UNION ALL
SELECT 'bb-1', 'S1', '998877' FROM DUAL UNION ALL
SELECT 'bb-1', 'S2', '998878' FROM DUAL UNION ALL
SELECT 'bb-1', 'C1', 'cc-1' FROM DUAL UNION ALL
SELECT 'cc-1', 'X1', '998877' FROM DUAL UNION ALL
SELECT 'cc-1', 'X2', '998878' FROM DUAL;
8 rows affected
SELECT "order",
part,
sn,
CONNECT_BY_ROOT "order" AS parent
FROM table_name
START WITH "order" = 'aa-1'
CONNECT BY PRIOR sn = "order"
order PART SN PARENT
aa-1 A1 112233 aa-1
aa-1 A2 112234 aa-1
aa-1 B1 bb-1 aa-1
bb-1 S1 998877 aa-1
bb-1 S2 998878 aa-1
bb-1 C1 cc-1 aa-1
cc-1 X1 998877 aa-1
cc-1 X2 998878 aa-1
WITH orders ("order", part, sn, parent) AS (
SELECT "order", part, sn, "order"
FROM table_name
WHERE "order" = 'aa-1'
UNION ALL
SELECT t."order", t.part, t.sn, o.parent
FROM orders o
INNER JOIN table_name t
ON o.sn = t."order"
)
SELECT *
FROM orders;
order PART SN PARENT
aa-1 A1 112233 aa-1
aa-1 A2 112234 aa-1
aa-1 B1 bb-1 aa-1
bb-1 S1 998877 aa-1
bb-1 S2 998878 aa-1
bb-1 C1 cc-1 aa-1
cc-1 X1 998877 aa-1
cc-1 X2 998878 aa-1