아래는 예시 데이터입니다.
TABLE 1
PJT_SQ, DEPT, UNIT, CONTENT
1001 부서1 유닛1 내용1
1001 부서2 유닛2 내용2
1002 부서1 유닛3 내용3
1002 부서2 유닛4 내용3
TABLE 2
PJT_SQ, PJT_NM
1001 프로젝트1
1002 프로젝트2
식으로 2개 테이블을 조인하려고 합니다.
출력형태는
1번 컬럼 | 2번 컬럼 |
프로젝트1 | |
DEPT1 | |
UNIT1 | |
CONTENT | |
CONTENT | |
UNIT2 | |
CONTENT | |
CONTENT | |
프로젝트2 | |
DEPT1 | |
UNIT2 | |
CONTENT | |
DEPT2 | |
UNIT1 | |
CONTENT |
화면단에서는 프로젝트를 열면 프로젝트에 속한 DEPT가 나오고
거기서 DEPT를 또 열면 UNIT이 나오고 유닛을 열면 나머지 유닛에 속한 내용이 나오는 식입니다.
이게 3개가 펼쳐지는 구조라 너무 햇갈립니다..
그리고 부모 자식관계가 마땅히 없는데 어떤식으로 해야할지요..
소중한 지식공유 부탁드립니다.
WITH t1 AS ( SELECT 1001 pjt_sq, '부서1' dept, '유닛1' unit, '내용1' content FROM dual UNION ALL SELECT 1001, '부서2', '유닛2', '내용2' FROM dual UNION ALL SELECT 1002, '부서1', '유닛3', '내용3' FROM dual UNION ALL SELECT 1002, '부서2', '유닛4', '내용3' FROM dual ) , t2 AS ( SELECT 1001 pjt_sq, '프로젝트1' pjt_nm FROM dual UNION ALL SELECT 1002, '프로젝트2' FROM dual ) SELECT DECODE(GROUPING_ID(a.dept, a.unit, a.content) , 7, b.pjt_nm , 3, ' ' || a.dept , 1, ' ' || a.unit ) c1 , a.content c2 FROM t1 a , t2 b WHERE a.pjt_sq = b.pjt_sq GROUP BY a.pjt_sq, b.pjt_nm, ROLLUP(a.dept, a.unit, a.content) ORDER BY a.pjt_sq , a.dept NULLS FIRST , a.unit NULLS FIRST , a.content NULLS FIRST ;