오라클에서는 Full Outer Join을 하기위해
양쪽 컬럼에 컬럼(+) = 컬럼(+)를 쓰면 오류가 난다..
그러다 보니 ansi-sql 문법으로 Full Outer Join을 해야한다...
with T1 as (
select '1' A1, '12' A2 from dual
union all
select '3' A1, '32' A2 from dual
)
, T2 as (
select '1' A1, '11' B2 from dual
union all
select '2' A1, '21' B2 from dual
)
, T3 as (
select '2' A1, '11' C2 from dual
union all
select '4' A1, '21' C2 from dual
union all
select '1' A1, '24' C2 from dual
)
select coalesce(T1.A1,T2.A1,T3.A1) A1
, T1.A2
, T2.B2
, T3.C2
from T1 full outer join T2 on T1.A1 = T2.A1
full outer join T3 on T2.A1 = T3.A1
결과값
A1 |
A2 |
B2 |
C2 |
1 |
12 |
11 |
24 |
2 |
NULL |
21 |
11 |
3 |
32 |
NULL |
NULL |
4 |
NULL |
NULL |
21 |
with : 오라클은 with문을 이용하여 임시 테이블 같은 기능을 쓸수 있다.
Coalesce : 오라클의 NVL 대용으로 쓸수 있는 ansi-sql 함수다.
'sql' 카테고리의 다른 글
Join 유형 (0) | 2014.03.07 |
---|---|
row의 최소값, 최대값을 구하는 함수 GREATEST, LEAST (0) | 2014.03.07 |
오라클 connect by level 을 이용한 copy_t 테이블 (0) | 2014.02.24 |
오라클 병렬 처리 힌트 (0) | 2014.02.12 |
oracle instr() 함수 (0) | 2014.02.12 |