Preloader image
DDD

데이터베이스

WITH RECURSIVE를 활용한 방법 (오라클 12c 이상)

작성자 관리자 (admin)
조회수 648
입력일 2025-03-16 21:40:39

2. WITH RECURSIVE를 활용한 방법 (오라클 12c 이상)

 WITH RECURSIVE cte AS (
    -- "감자"가 포함된 부서를 찾음
    SELECT DEPT_ID
          , KRN_DEPT_NM
          , UPPR_DEPT_ID
          , SCRN_INDCT_SEQNO
      FROM TB_CI_DEPT_BSC
     WHERE UPPER(KRN_DEPT_NM) LIKE '%' || UPPER('감자') || '%'
    
    UNION ALL

    -- 검색된 부서의 상위 부서를 찾음
    SELECT d.DEPT_ID
          , d.KRN_DEPT_NM
          , d.UPPR_DEPT_ID 
          , d.SCRN_INDCT_SEQNO
      FROM TB_CI_DEPT_BSC d
      JOIN cte c
        ON d.DEPT_ID = c.UPPR_DEPT_ID

    UNION ALL

    -- 검색된 부서의 하위 부서를 찾음
    SELECT d.DEPT_ID
          , d.KRN_DEPT_NM
          , d.UPPR_DEPT_ID
          , d.SCRN_INDCT_SEQNO
      FROM TB_CI_DEPT_BSC d
      JOIN cte c
        ON d.UPPR_DEPT_ID = c.DEPT_ID
)
SELECT *
  FROM cte
 ORDER BY SCRN_INDCT_SEQNO;