A란 테이블에 두개의 컬럼이 있습니다. ID와 키워드 컬럼이 있습니다.
그래서 조회를 하면 샘플 첨부파일 처럼
ITEM_IDX KEY_WORDS
1 국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님| 국회의사당
2 국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님| 국회의사당
그런데 이 쿼리의 키워드를 | 기준으로 쪼개서
샘플2 첨부파일 처럼
1 국회
1 정각회
......
1 국회의사당
2 국회
2 정각회
이렇게 해당 ID에 키워드 값을 쪼개서 넣을려고 하는데요.
그래서
WITH TT AS
(
SELECT KEY_WORDS 키워드 FROM KTDA_PHOTO_FILE GROUP BY KEY_WORDS
)
SELECT TRIM(REGEXP_SUBSTR(키워드, '[^|]+', 1, LEVEL)) AS TXT
FROM TT
CONNECT BY INSTR(키워드, '|', 1, LEVEL - 1) > 0
쪼개면 쪼개기 첨부파일 처럼 쪼개지는데
해당 키워드에 어떤 ID에 포함되어 있는지도 구분이 안되고
저걸 샘플2의 결과 처럼 나오게 할려면 어떻게 쿼리를 짜야 할지 머리가 복잡하네요.... ㅠㅠ
어떻게 해야 될지 방법 좀 부탁드리겠습니다. ㅠㅠ
-- KEY_WORDS가 최대 100로 봅니다.. 필요시 늘려주세요.. WITH TT (ITEM_IDX, KEY_WORDS) AS ( SELECT 1, '국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님| 국회의사당' FROM DUAL UNION ALL SELECT 2, '국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님| 국회의사당' FROM DUAL ) SELECT ITEM_IDX , LTRIM(REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV)) KEY_WORDS FROM TT , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100) WHERE REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV) IS NOT NULL ORDER BY ITEM_IDX, LTRIM(REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV)) ;