배열 코드값 질문입니다 0 6 1,076

by Kaiger [SQL Query] [2019.05.07 22:10:01]


a 테이블에 코드값(city_cd 컬럼에)으로 seoul,busan,daegu 가 들어 있습니다. (1행에 데이터가  ',' 구분자로 들어 있습니다)

저 코드명은 b 테이블에 들어 있습니다

코드명 조회 시

select a.city_cd

     , listagg(b.city_nm, ',') within group order by (b.city_cd) as city_nm

from table a, table b

where a.city_cd = b.city_cd

이렇게 코드값을 조회 하려 하는데 .. 잘못되었나요?

 

by 마농 [2019.05.08 08:53:33]

질문의 내용이 모호한 부분이 많아 판단하기 어렵지만.
잘못 작성한 느낌이 들긴 합니다.
각 테이블의 코드와 코드명에 대한 예시자료를 표형태로 보여주세요.


by Kaiger [2019.05.08 09:22:50]

table a 는 city_cd 컬럼에 seoul , busan .. 등등 코드값으로 된 데이터 들이 있습니다

city_cd 에는 하나의 도시만 있는게 아니라 여러 도시들이 있습니

table a

seq city_cd
1 seoul,busan
2 busan
3

busan, ulsan

table b

city_cd city_nm
busan 부산
seoul 서울

구하려는 값은 busan,seoul 으로 된 데이터 들의 city_nm 을 가져오려고 합니다


by 마농 [2019.05.08 10:24:21]

중간에 공백이 있는 것도 있고 없는 것도 있네요? 맞나요?


by Kaiger [2019.05.08 15:11:47]

아뇨 공백은 없습니다.


by 마농 [2019.05.08 15:27:49]
WITH table_a AS
(
SELECT 1 seq, 'seoul,busan' city_cd FROM dual
UNION ALL SELECT 2, 'busan'         FROM dual
UNION ALL SELECT 3, 'busan,ulsan'   FROM dual
)
, table_b AS
(
SELECT 'busan' city_cd, '부산' city_nm FROM dual
UNION ALL SELECT 'seoul', '서울' FROM dual
UNION ALL SELECT 'ulsan', '울산' FROM dual
)
SELECT a.seq
     , a.city_cd
     , LISTAGG(b.city_nm, ',') WITHIN GROUP(ORDER BY INSTR(','||a.city_cd||',', ','||b.city_cd||',')) city_nm
  FROM table_a a
     , table_b b
 WHERE INSTR(','||a.city_cd||',', ','||b.city_cd||',') > 0
 GROUP BY a.seq, a.city_cd
;

 


by Kaiger [2019.05.08 16:31:14]

감사합니다. rownum 이 추가 되어서 좀 수정할 부분이 생겼지만 잘 해결하였습니다

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