아래의 원본테이블의 내용을 조회결과 처럼 보이게 하려는데
잘 안되서 조언을 구해 봅니다.
생각보다 힘드네요 ㅠㅠ
[원본 테이블]
PROCID | EDU_SEQ | EDU_ID_LIST | EDU_NAME_LIST | TITLE | DATE |
100000 | 1 | 00005,00006 | 홍길동,김유신 | 교육1 | ... |
100001 | 2 | 00005 | 홍길동 | 교육2 | |
100002 | 3 | 00006 | 김유신 | 교육3 |
[조회 결과]
PROCID | EDU_SEQ | EDU_ID_LIST | EDU_NAME_LIST | TITLE | DATE |
100000 | 1 | 00005 | 홍길동 | 교육1 | ... |
100000 | 1 | 00006 | 김유신 | 교육1 | |
100001 | 2 | 00005 | 홍길동 | 교육2 | |
100002 | 3 | 00006 | 김유신 | 교육3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | WITH t AS ( SELECT '100000' procid, 1 edu_seq, '00005,00006' edu_id_list, '홍길동,김유신' edu_name_list, '교육1' title, '' dt FROM dual UNION ALL SELECT '100001' , 2, '00005' , '홍길동' , '교육2' , '' FROM dual UNION ALL SELECT '100002' , 3, '00006' , '김유신' , '교육3' , '' FROM dual ) SELECT procid , edu_seq , REGEXP_SUBSTR(edu_id_list , '[^,]+' , 1, lv) edu_id , REGEXP_SUBSTR(edu_name_list, '[^,]+' , 1, lv) edu_name , title , dt FROM t , ( SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9) WHERE lv <= REGEXP_COUNT(edu_id_list, '[^,]+' ) ORDER BY procid, lv ; |