在oracleplsql中按根连接后显示直接父级

wvyml7n5  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(231)

我使用的是oracle12db和client。在这件事上需要帮助。我想填充一个列,在根之后显示根、子级和直接父级?让我们说“通过第二根连接”?
这是我目前的代码。

SELECT
          PARENT,
          CONNECT_BY_ROOT PARENT_ID AS ROOT_ID,
      ????2ND_ROOT_ID,
          CHILD_ID AS CHILD_ID 
     FROM TABLE
     START WITH 
        PARENT_ID = 1 
     CONNECT BY
         PRIOR CHILD_ID =  PARENT_ID

输入

PARENT_ID   CHILD_ID
1           1.1
1           1.2
1.1         1.1.1
1.1         1.1.2
1.1         1.1.3
1.1         1.1.4
1.1         1.1.5
1.2         1.2.1
1.2         1.2.2
1.1.1       1.1.1.1
1.1.1       1.1.1.2
1.1.3       1.1.3.1
1.1.3       1.1.3.2
1.1.3       1.1.3.3

输出:

ROOT_ID  2ND_ROOT_ID    CHILD_ID
    1        1.1        1.1
    1        1.2        1.2
    1        1.1        1.1.1
    1        1.1        1.1.2
    1        1.1        1.1.3
    1        1.1        1.1.4
    1        1.1        1.1.5
    1        1.2        1.2.1
    1        1.2        1.2.2
    1        1.1        1.1.1.1
    1        1.1        1.1.1.2
    1        1.1        1.1.3.1
    1        1.1        1.1.3.2
    1        1.1        1.1.3.3

还尝试使用“按路径连接”中的子字符串

regexp_substr(SYS_CONNECT_BY_PATH, ....

在根之后获取父级,但它给了我一个ora-01489错误。
敬请指教,谢谢

h43kikqp

h43kikqp1#

您可以通过路径使用条件系统连接:

rtrim(sys_connect_by_path(case when level<=2 then id else null end, '.'),'.')

相关问题