2

ツリー データがあり、ルートの親のみを選択しようとしています。データはより大きなセットのサブセットである可能性があるため、親が空でない可能性があります。データセット内の各ツリーの最上位レベルを取得したいと考えています。

 with test_data as (
 select '1' ID,'100' name, null parent  from dual
 union
 select '2' ID,'200' name, null parent  from dual
 union
 select '3' ID,'300' name, null parent  from dual
 union
 select '1.1' ID,'1.100' name, '1' parent  from dual
 union
 select '2.1' ID,'2.100' name, '2' parent  from dual
 union
 select '3.1' ID,'3.100' name, '3' parent  from dual
 union
 select '3.1.1' ID,'3.1.100' name, '3.1' parent  from dual
 union
 select '3.1.2' ID,'3.1.2.100' name, '3.1' parent  from dual
 union
 select '4.1' ID,'4.100' name, '4' parent  from dual
 union
 select '4.1.1' ID,'4.1.100' name, '4.1' parent  from dual
 union
 select '4.1.2' ID,'4.1.2.100' name, '4.1' parent  from dual )
 select * from test_data
 start with parent is null
 connect by parent=prior id

として結果を表示したい

     ID    NAME      PAR
    ----- --------- ---
    1     100
    2     200
    3     300
    4.1   4.100      4

サブセットの一部が親であるため、ROWID 4 は選択されていませんが、4.1 がこのデータ セットの最上位であるため、その行を返したいと考えています。基本的に、各階層の最上位レベルのレコードをすべて表示したいと思います。

ありがとうございました。

4

1 に答える 1