2017-07-04 6 views
0

レベルに基づいてデータを3つの異なる列に分割する必要があります。下の表では、SU_DC_1はSETTLEUNIT列に基づく最上位です。レベルを追加する必要があります。異なるレベルの列にテーブルを分割する

親:TOPSETTLUNIT 子:私はさらに3列以上の階層で

Input Table

を作成する必要がある子に基づいSETTLEUNIT

enter image description here

  • として記載されています出力:

enter image description here

私はそれは難しいそれのためにクエリを記述するために見つけることしています。助けてください。以下のような

+0

理解できる何かで不可解な略語/コードを置き換える例を記述してください。 –

+0

最初のテーブルに一意の列があるか、別のテーブルを作成する必要がある列に基づいていますか?もう少し説明してください – Kalyan

+0

@Kalyan私は最初のテーブルに一意の識別子を持っていません。 SETTLEUNIT列に基づいて私は表2を導出する必要があります – MKN

答えて

3

何か:

SELECT topsettlunit, 
     settleunit, 
     CONNECT_BY_ROOT(topsettlunit) AS level1, 
     CASE LEVEL 
     WHEN 1 THEN settleunit 
     WHEN 2 THEN topsettlunit 
     END AS level2, 
     CASE LEVEL 
     WHEN 2 THEN settleunit 
     END AS level3 
FROM your_table 
START WITH topsettlunit NOT IN (SELECT settleunit FROM your_table) 
CONNECT BY PRIOR settleunit = topsettlunit; 
関連する問題