Library/SQL
[ORACLE] CONNECT BY(계층형 조회)
kdg99
2023. 6. 15. 13:34
--레벨, LPAD(문자, 개수)||컬럼명, 부서코드
SELECT LEVEL,
LPAD (' ', (LEVEL - 1) * 3) || DEPT_NAME AS DEPT_NAME,
DEPT_CODE
FROM DEPT
START WITH LEV = '1' --최상위레벨
CONNECT BY PRIOR DEPT_CODE = UP_DEPT_CODE --부서코드 = 직속상위부서코드
ORDER SIBLINGS BY LEV ASC;
/* LEVEL == CONNECT BY 절에서 생성된다 */
SELECT *, LEVEL
FROM <TABLE>
/* 깊이 측정에 사용할 컬럼과 최상위 값 LEVEL 1 */
START WITH <부서코드> = '1000'
/* 부서값과 상위부서코드 -> 깊이 계산 */
CONNECT BY PRIOR <부서코드> = <상위부서코드>
/* 상위부서코드가 1000인 부서의 LEVEL(깊이)은 2 */