将表拆分成不同级别的列

问题描述:

我已经要求将基于级别的数据拆分为3个不同的列。在下表中,SU_DC_1是基于SETTLEUNIT列的*别,我需要添加该级别。将表拆分成不同级别的列

家长:TOPSETTLUNIT 儿童:根据儿童SETTLEUNIT

我需要创建额外的3列

Input Table

在上面的层级被提及作为 enter image description here

  • 输出:

enter image description here

我发现很难编写查询它。能否请你帮忙 。

+0

请写的东西可以理解的替代神秘缩写/代码的例子。 –

+0

您的第一张桌子上是否有任何独特的列,或者根据我们需要构建另一张桌子的哪一列?请多说明一下 – Kalyan

+0

@Kalyan我没有第一张桌子上的唯一标识符。基于SETTLEUNIT列我需要派生表2 – MKN

喜欢的东西:

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;