split 또는 코드명칭 치환 쿼리질문 0 2 1,198

by 제블리 [SQL Query] split instr replace [2021.05.17 16:48:45]


안녕하세요. 

여러방면으로 테스트 또는 실행하다가 도저히 정답을 찾아내지 못하여 질문합니다.... 

공통코드화 되어있는 코드를 별도의 테이블의 한 컬럼에  11,12 이런식으로 저장을 하였습니다. 

이제 이 컬럼들의 명칭을 공통테이블에 저장되어있는 값을 가져와서 코드의 명으로 select 해줘야하는데 

 REGEXP_SUBSTR (A.CPOS_CODE, '[^' || ',' || ']+', 1) 를 사용하거나 LISTAGG를 사용해도 정답을 얻을 수가 없더군요..

 

크게 예를 들면 

공통 테이블에는

공통코드 공통코드명
00 임원
01 본부장

 

이런식으로 저장되어있고 

저장되어있는 테이블에는 한 컬럼 안에 00,01 으로 콤마로 구분되어 저장되어 있습니다. 

콤마로 구분되어있는 컬럼을 임원,본부장 이런식으로 명칭을 조회하고 싶습니다....

 

 

by 마농 [2021.05.17 18:59:25]
WITH code_t AS
(
SELECT '00' cd, '임원' nm FROM dual
UNION ALL SELECT '01', '본부장' FROM dual
UNION ALL SELECT '02', '처장' FROM dual
UNION ALL SELECT '03', '부장' FROM dual
)
, data_t AS
(
SELECT 1 id, '01,02' cd FROM dual
UNION ALL SELECT 2, '00,03' FROM dual
)
SELECT a.id
     , a.cd
     , LISTAGG(b.nm, ',') WITHIN GROUP(ORDER BY b.cd) nm
  FROM data_t a
     , code_t b
 WHERE INSTR(','||a.cd||',', ','||b.cd||',') > 0
 GROUP BY a.id, a.cd
;

 


by 제블리 [2021.05.21 17:11:14]

감사합니다 마농님 !! 

저걸 토대로 응용해서 활용할수 있었습니다!

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