2016-01-20 24 views
-2

我有數據如下家長和孩子有關作爲循環滿耳

A  B 
1001 601 
1002 1001 
1003 1002 
1004 1002 
1005 1002 

我需要輸出

1001 
1002 
1003 
1001 
1002 
1004 
1001 
1002 
1005 

請幫我

+0

你怎麼知道你需要這個輸出?將輸入轉換爲輸出的規則是什麼? – Psytho

+0

使用以前的連接我們可以得到20%的輸出,SELECT A FROM T108 T8以C = 1開始,由前面的A = B連接。從這個查詢中我得到1001 1002 1003,但其餘的看起來不對 –

+0

什麼是算法?你怎麼知道你的輸出順序是正確的?例如,601的輸出位置在哪裏? – Psytho

回答

0

試試下面的代碼。

WITH sample_data AS(
    SELECT '1001' A, '601' B FROM dual UNION ALL 
    SELECT '1002' A, '1001' B FROM dual UNION ALL 
    SELECT '1003' A, '1002' B FROM dual UNION ALL 
    SELECT '1004' A, '1002' B FROM dual UNION ALL 
    SELECT '1005' A, '1002' B FROM dual 
) 
SELECT TRIM(COLUMN_VALUE) tree_path 
FROM 
(
    SELECT SUBSTR(SYS_CONNECT_BY_PATH(A, ','),2) tree_path 
    FROM sample_data 
    WHERE CONNECT_BY_ISLEAF = 1 
    start with A = '1001' 
    CONNECT BY PRIOR A = B 
), XMLTABLE(('"' || REPLACE(tree_path, ',', '","') || '"')) 
+0

非常感謝你.... –

+0

歡迎。你能接受答案:) –