쿼리 질문 0 1 1,159

by 전욱 [Oracle 기초] [2012.04.05 17:35:54]



테이블명 : 대륙
code / dae
1 / 아시아
2 / 유럽
3 / 북미


테이블명 : 국가
code / country
1 / 한국
1 / 일본
1 / 중국
2 / 프랑스
2 / 독일
3 / 미국
3 / 멕시코
3 / 캐나다


select b.country from 대륙 a, 국가 b
where a.code = b.code

이렇게 조회하면 결과가 아래처럼 나오는데
1 / 한국
1 / 일본
1 / 중국
2 / 프랑스
2 / 독일
3 / 미국
3 / 멕시코
3 / 캐나다


제가 원하는건 이렇게 나오고 싶습니다.

1 / 한국
일본
중국
2 / 프랑스
독일
..
...

제가 알고 있는 기초지식으로는 도저히 저렇게 출력을 못하겠습니다 ㅠㅠ;;
도움 부탁드릴게요.

by 비니부장 [2012.04.05 17:56:01]
with TABLE_A(code, dae) as
(
select 1, '아시아' from dual union all
select 2, '유럽' from dual union all
select 3, '북미' from dual
),
TABLE_B(code, country) as
(
select 1, '한국' from dual union all
select 1, '일본' from dual union all
select 1, '중국' from dual union all
select 2, '프랑스' from dual union all
select 2, '독일' from dual union all
select 3, '미국' from dual union all
select 3, '멕시코' from dual union all
select 3, '캐나다' from dual
) 
select
  decode(t.rowno, 1, t.code) as code,
   t.country,
  decode(t.rowno, 1, t.code || '/') || t.country as txt
from
(
   select
     row_number() over(partition by tb.code order by country desc) rowno,
     tb.*
   from   
     table_a ta
     inner join table_b tb on tb.code = ta.code
) t
order by
  t.code, t.rowno;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입