Database/Oracle

Oracle 계층구조쿼리

xProgrammer 2018. 3. 19. 09:56

스키마

http://xprogrammer.tistory.com/333


쿼리
SELECT LEVEL, CONNECT_BY_ISLEAF,
LPAD('-', 4*(LEVEL-1),'-') || ename level_ename, ENAME,
       PRIOR ename mgrname,
       empno, mgr, job 
FROM emp
-- 최상위로 사용될 행 지정
START WITH job='PRESIDENT'
-- 상위계층과 하위계층의 관계를 정의
CONNECT BY PRIOR empno=mgr
-- 같은 LEVEL 사이에서의 정렬
ORDER SIBLINGS BY ENAME

결과


쿼리

SELECT LEVEL,
CONNECT_BY_ISLEAF,
CONNECT_BY_ISCYCLE,
LPAD('-', 4*(LEVEL-1),'-') || ename ename, 
       PRIOR ename mgrname,
       empno, mgr, job 
FROM emp
START WITH empno = '7369'
CONNECT BY NOCYCLE PRIOR mgr = empno; 

결과


테스트

http://sqlfiddle.com



'Database > Oracle' 카테고리의 다른 글

Oracle 날짜계산  (0) 2018.03.19
Oracle 함수 - Grouping Sets  (0) 2018.03.19
Oracle 함수 - TO_CHAR  (0) 2018.03.13
Oracle UNPIVOT  (0) 2018.03.09
Oracle PIVOT  (0) 2018.03.09