database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40835 게시물 읽기
No. 40835
sql 조언 부탁드립니다.
작성자
일쌍다반사(jshlove7)
작성일
2015-06-17 13:05ⓒ
2015-06-17 13:41ⓜ
조회수
7,332

select
    a.a,
    a.b,
    a.c
from
(
     select a.a,a.b,a.c from
     (
      select 'a' a , 'b1' b , '' c from dual
      union
      select 'a' a , 'b2' b , '' c from dual
      union
      select 'a' a , 'b3' b , '' c from dual
      union
      select 'a' a , 'b4' b , '' c from dual
      union
      select 'b' a , 'b5' b , '' c from dual
      union
      select 'b' a , 'b6' b , '' c from dual
     ) a
     union
    select b.a,b.b,b.c  from
    (
      select 'a' a , '' b , 'c1' c from dual
      union
      select 'a' a , '' b , 'c2' c from dual
      union
      select 'b' a , '' b , 'c3' c from dual
      union
      select 'b' a , '' b , 'c4' c from dual
      union
      select 'b' a , '' b , 'c5' c from dual

    ) b
) a   

a b1  
a b2  
a b3  
a b4  
a   c1
a   c2
b b5  
b b6  
b   c3
b   c4
b   c5

위 데이타를 아래와 같이 표현하고 싶습니다.

a b1 c1
a b2 c2
a b3  
a b4  
b b5 c3
b b6 c4
b   c5

sql를 어떻게 구현해야 할까요?

조언 부탁드립니다..ㅜㅜ

 

 

이 글에 대한 댓글이 총 1건 있습니다.

자체 해결해보았습니다.


select --a.rn,b.rn,
       nvl(a.a,b.a) a,nvl(a.b,b.b) b,nvl(a.c,b.c) c from
(
    with a as
    ( select 'a' a , 'b1' b , '' c from dual
      union
      select 'a' a , 'b2' b , '' c from dual
      union
      select 'a' a , 'b3' b , '' c from dual
      union
      select 'a' a , 'b4' b , '' c from dual
      union
      select 'b' a , 'b5' b , '' c from dual
      union
      select 'b' a , 'b6' b , '' c from dual
    )
    select a.*,row_number() over(partition by a.a order by a.a,a.b,a.c asc) rn from a
) a
full outer join
(
    with b as
    (
       select 'a' a , '' b , 'c1' c from dual
      union
      select 'a' a , '' b , 'c2' c from dual
      union
      select 'b' a , '' b , 'c3' c from dual
      union
      select 'b' a , '' b , 'c4' c from dual
      union
      select 'b' a , '' b , 'c5' c from dual
    )
    select b.*,row_number() over(partition by b.a order by b.a,b.b,b.c asc) rn from b
) b
on a.a = b.a
and a.rn = b.rn
order by nvl(a.a,b.a),nvl(a.b,b.b),nvl(a.c,b.c)
;
 

위 SQL로 원하는 결과는 얻었는데, 정확하고 효율적인 SQL인지는 정확한 판단이 서질 않네요 ^^;

많은 고수님들의 조언 부탁드립니다. ^^

꾸벅..~~!!

일쌍다반사(jshlove7)님이 2015-06-17 15:43에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40838시간의 총합을 구하는 문의 [2]
카멜
2015-06-22
7274
40837연속된 구간별 그룹 쿼리 문의 [1]
쿼리OTL
2015-06-18
8079
40836리스트를 만들고 싶습니다. [2]
선이
2015-06-17
7090
40835sql 조언 부탁드립니다. [1]
일쌍다반사
2015-06-17
7332
40833sql 하나 봐주세요. [2]
이현정
2015-06-16
7197
40831행님들 급합니다 제발좀 도와주세요
백광규
2015-06-14
7147
40830sql문을 buffer에 오래 두기 [2]
이현정
2015-06-11
7345
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다