오라클에서는 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
Posted by 무세1
,