안녕하세요. 아래 관련한 질의에 대해서 답변을 주셔서 많은 도움이 됐습니다.
추가 질문이 있어서 다시한번더 글 올립니다~꾸벅
안녕하세요. 아래 관련한 질의에 대해서 답변을 주셔서 많은 도움이 됐습니다.
추가 질문이 있어서 다시한번더 글 올립니다~꾸벅
ID | VALUE | 나라 |
abc1 | aabb | 미국 |
abc1 | babb | 미국 |
abc1 | cccc | 한국 |
abc2 | aaaa | 일본 |
위처럼 테이블이 있는데
위 테이블을 기준으로 새로운 테이블을 만들려고합니다.
ID | 미국 | 한국 | 일본 |
abc1 |
ab
|
cc | |
abc2 | aa |
어제 질의 드린 것과 조금 다른 케이스 인데요.
첫번째 테이블의 value값을 가운데 두글자만 추출해서 두번째 테이블로 만드는건데..
즉, abc1 미국에는 ab가 중복이라서 한번만 값이 들어가게 됩니다.
어떤식으로 가능할까요??
답변 부탁드립니다!
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID | VALUE | 나라 |
abc1 | aaa | 미국 |
abc1 | bbb | 미국 |
abc1 | ccc | 한국 |
abc2 | aaa | 일본 |
위처럼 테이블이 있는데
위 테이블을 기준으로 새로운 테이블을 만들려고합니다.
ID | 미국 | 한국 | 일본 |
abc1 |
aaa bbb |
ccc | |
abc2 | aaa |
첫번째 테이블 -> 두번째 테이블로 가공이 가능할까요? 쿼리를 만드려니 쉽지않아서..
동일한 ID를 나라별로 분류하고 싶은데 가능할까요?
답변부탁드리겠습니다.
감사합니다.
WITH t AS ( SELECT 'abc1' id, 'aabb' v, '미국' na FROM dual UNION ALL SELECT 'abc1', 'babb', '미국' FROM dual UNION ALL SELECT 'abc1', 'cccc', '한국' FROM dual UNION ALL SELECT 'abc2', 'aaaa', '일본' FROM dual UNION ALL SELECT 'abc3', 'aaaa', '한국' FROM dual UNION ALL SELECT 'abc3', 'aaba', '한국' FROM dual ) SELECT id , LISTAGG(DECODE(na, '미국', x), ',') WITHIN GROUP(ORDER BY x) 미국 , LISTAGG(DECODE(na, '한국', x), ',') WITHIN GROUP(ORDER BY x) 한국 , LISTAGG(DECODE(na, '일본', x), ',') WITHIN GROUP(ORDER BY x) 일본 FROM (SELECT DISTINCT id, SUBSTR(v, 2, 2) x, na FROM t) GROUP BY id ; SELECT * FROM (SELECT DISTINCT id, SUBSTR(v, 2, 2) x, na FROM t) PIVOT (LISTAGG(x, ',') WITHIN GROUP(ORDER BY x) FOR na IN ( '미국' "미국", '한국' "한국", '일본' "일본") ) ;