以下面SQL为例:
SELECT
*
FROM
SYS_ORG
START WITH
ORG_LEVEL = '01' --机构层级
CONNECT BY
PRIOR ORG_CODE = PARENT_CODE;
该造后(展示字段个数需要上下一致):
WITH RPL (ORG_CODE,PARENT_CODE) AS (
SELECT
ORG_CODE,PARENT_CODE FROM SYS_ORG
WHERE ORG_LEVEL = '01'
UNION ALL
SELECT
CHILD.ORG_CODE, CHILD.PARENT_CODE FROM RPL PARENT, SYS_ORG CHILD
WHERE
PARENT.ORG_CODE = CHILD.PARENT_CODE )
SELECT * FROM RPL
延伸(找到某一层级下所有的节点,并拼接出全路径):
WITH RPL (ID,ORG_CODE,PARENT_CODE,parentPath) AS (
SELECT
ID,ORG_CODE,PARENT_CODE,CAST(ORG_CODE AS VARCHAR(200)) AS parentPath FROM SYS_ORG
WHERE ORG_LEVEL = '01'
UNION ALL
SELECT
CHILD.ID,CHILD.ORG_CODE,CHILD.PARENT_CODE,CAST(CONCAT(PARENT.parentPath || '/',CHILD.ORG_CODE) AS VARCHAR(200)) AS parentPath FROM RPL PARENT, SYS_ORG CHILD
WHERE
PARENT.ORG_CODE = CHILD.PARENT_CODE )
SELECT * FROM RPL