가로데이터를 세로로(응용 질문) 0 2 1,598

by 가을에사랑 [Oracle 기초] [2018.01.10 14:17:17]


아래의 원본테이블의 내용을 조회결과 처럼 보이게 하려는데

잘 안되서 조언을 구해 봅니다.

생각보다 힘드네요 ㅠㅠ

 

[원본 테이블]

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  
by 마농 [2018.01.10 15:07:23]
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
;

 


by 가을에사랑 [2018.01.10 15:24:20]
SELECT EDU_SEQ
     , LTRIM(REGEXP_SUBSTR(EDU_ID_LIST,'[^,]+',1,LV)) EDU_ID_LIST
FROM WF_EDUCATION_LIST
   , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100)
WHERE REGEXP_SUBSTR(EDU_ID_LIST,'[^,]+',1,LV) IS NOT NULL
ORDER BY EDU_SEQ

방금 연구하고 찾아서 달고 답이 맞는지 여쭈려고 했는데 감사드립니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입