2017-06-20 97 views
1

我的情況如下。我有一個包含產品層次結構的表格。下表是數據集的摘錄:如何使用sql定義層次結構中的層數?

child parent 
    1  2 
    2  3 
    4  5 
    6  7 

我想添加一個包含層次結構深度(子級)的列。東西如下:

child parent depth 
    1  2  2 
    2  3  1 
    4  5  1 
    6  7  1 

我該怎麼做在oracle?謝謝!

+1

你至少11克R2使用?然後遞歸的*公共表格*(CTE)是可能的 – Richard

+1

爲什麼第一行和第二行的深度分別是3和2?他們應該沒有2和1的深度? – MT0

+0

你是對的深度。我改變了它。謝謝 –

回答

5

喜歡的東西:

SELECT child, parent, level 
FROM your_table 
START WITH parent NOT IN (SELECT child FROM your_table) 
CONNECT BY parent = PRIOR child; 

輸出:

CHILD PARENT LEVEL 
----- ------ ----- 
    1  2  2 
    2  3  1 
    4  5  1 
    6  7  1 
+0

看起來像我正在尋找。謝謝。關卡在哪裏來自您的選擇? –

+1

@PatrickBalada ['LEVEL'僞列](https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns001.htm#i1009261)由分層查詢生成。 – MT0

+0

謝謝你的快速回答! –