1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| WITH RECURSIVE
DEPT_TREE AS (
SELECT D.DEPT_NO, D.HEAD_DEPT, D.DEPARTMENT,
CAST('.' AS VARCHAR(255)) AS PATH1,
CAST('.' || D.DEPT_NO || '.' AS VARCHAR(255)) AS PATH2,
CAST('.' || D.DEPT_NO || '.' AS VARCHAR(255)) AS PATH3
FROM DEPARTMENT D
WHERE D.HEAD_DEPT IS NULL
UNION ALL
SELECT D.DEPT_NO, D.HEAD_DEPT, D.DEPARTMENT,
H.PATH1 || D.HEAD_DEPT || '.',
H.PATH2 || D.DEPT_NO || '.',
'.' || D.DEPT_NO || H.PATH3
FROM DEPT_TREE H JOIN DEPARTMENT D
ON D.HEAD_DEPT = H.DEPT_NO
)
SELECT * FROM DEPT_TREE |
Partager