如何实现递归层次结构

时间:2017-07-31 14:08:34

标签: sql oracle

我需要一个可以将可用数据转换为预期数据的查询(参见下面的示例)

可用数据

Prnt Child
-----------------
BU1 BU2
BU1 BU3
BU1 BU4
BU3 BU8
BU3 BU9
BU4 BU5
BU4 BU6
BU4 BU7
BU6 BU10
BU6 BU11
BU7 BU12

预期产出

Prnt Child
-----------------------
BU1 BU2
BU1 BU3
BU1 BU4
BU1 BU8
BU1 BU9
BU1 BU5
BU1 BU6
BU1 BU7
BU1 BU10
BU1 BU11
BU1 BU12
BU2 BU2
BU3 BU8
BU3 BU9
BU4 BU6
BU4 BU7
BU4 BU5
BU4 BU10
BU4 BU11
BU4 BU12

and so on....

1 个答案:

答案 0 :(得分:1)

您可以在分层查询中使用CONNECT_BY_ROOT

SELECT CONNECT_BY_ROOT( prnt ) AS prnt,
       chld
FROM   your_table
CONNECT BY PRIOR chld = prnt
UNION ALL
SELECT chld, chld
FROM   your_table
ORDER BY prnt, chld;