계층형 구조를 갖는 생산품모자관계 테이블에서 부모와 자식간의 관계를 나타내고 싶습니다.
계층형은 부모공정명, 자식공정명으로 모자관계를 갖습니다.
생산품모자관계 테이블 (TB_PAR_CHR) 구조 및 데이터
SEQ 부모공정명(P_WORKS) 부모생산번호(P_NO) 자식공정명(C_WORKS) 자식생산번호(C_NO)
1 제강 A0010 주조 B0010
2 제강 A0010 주조 B0020
3 주조 B0010 전단 C0010
4 전단 C0010 열연 E0010
5 전단 C0010 열연 E0011
6 주조 B0020 전단 C0020
7 전단 C0020 후판 F0010
원하는 출력 형태 (제강에서 생산된 하나의 생산품 밑에 있는 모든 자식 생산번호를 계층적으로 표시하고 싶음)
생산번호 공정명
A0010 제강
B0010 주조
C0010 전단
E0010 열연
E0011 열연
C0020 전단
F0010 후판
F0011 후판
<참고 : 공정계층구조 각공정별로 생산번호를 KEY하는 별도의 테이블로 구성되고 있음>
제강 --- 주조 ----- 전단 ------ 열연 -
| |---------- 후판
|-------- 단조 ------ 열처리
| |---------- 가공
분괴 ------ 연삭-------크랭크
|--------- 봉강
WITH tb_par_chr AS ( SELECT 1 seq, '제강' p_works, 'A0010' p_no, '주조' c_works, 'B0010' c_no FROM dual UNION ALL SELECT 2, '제강', 'A0010', '주조', 'B0020' FROM dual UNION ALL SELECT 3, '주조', 'B0010', '전단', 'C0010' FROM dual UNION ALL SELECT 4, '전단', 'C0010', '열연', 'E0010' FROM dual UNION ALL SELECT 5, '전단', 'C0010', '열연', 'E0011' FROM dual UNION ALL SELECT 6, '주조', 'B0020', '전단', 'C0020' FROM dual UNION ALL SELECT 7, '전단', 'C0020', '후판', 'F0010' FROM dual ) SELECT p_works works , p_no no FROM tb_par_chr WHERE p_no = 'A0010' AND ROWNUM = 1 UNION ALL SELECT LPAD(' ', LEVEL*2, ' ') || c_works works , LPAD(' ', LEVEL*2, ' ') || c_no no FROM tb_par_chr START WITH p_no = 'A0010' CONNECT BY PRIOR c_no = p_no ;