여러개 테이블 Full Outer Join 방법시 가장 효율적인 방법을 구합니다 0 2 5,445

by 비니 [SQL Query] full outer join [2013.02.02 07:46:08]


안녕하세요~

여러개 테이블을 합쳐서 정렬을 하고 싶은데 가장 효율적 방법으로 연결하고 싶습니다.

아래와 같이 4개 테이블을 가지고 일자별로 구성하고 싶습니다.
예)
1.입금테이블
일자 입금구분 입금액
01-01 01 20000
01-05 02 50000
01-15 01 30000
02-01 02 20000
02-22 01 50000
02-30 03 3000


2.지급테이블
일자 지급구분 지급액
01-02 01 30000
01-08 01 2000
01-15 02 5000
02-05 05 30000
02-22 03 2000

3.입고테이블
일자 입고수량
01-03 5
02-05 10
02-22 55

4.출고테이블
일자 출고수량
01-05 5
01-08 3
02-20 7
02-22 1
02-25 5

결과)
일자 입금구분 입금액 지급구분 지급액 입고수량 출고수량
01-01 01 20000        
01-02     01 30000    
01-03         5  
01-05 02 50000       5
01-08     01 2000   3
01-15 01 30000 02 5000    
02-01 02 20000        
02-05     05 30000 10  
02-20           7
02-22 01 50000 03 2000 55 1
02-25           5
02-30 03 3000        


읽어주시고 해결주시려고 마음 항상 감사합니다
by 아린 [2013.02.02 12:56:59]
굳이 조인 할 필요없이 union 사용하시면 될듯하네요.

WITH 입금테이블(일자,입금구분,입금액) AS(
SELECT '01-01',    '01',    20000 FROM dual UNION ALL
SELECT '01-05',    '02',    50000 FROM dual UNION ALL
SELECT '01-15',    '01',    30000 FROM dual UNION ALL
SELECT '02-01',    '02',    20000 FROM dual UNION ALL
SELECT '02-22',    '01',    50000 FROM dual UNION ALL
SELECT '02-30',    '03',    3000 FROM dual
),
지급테이블(일자,지급구분,지급액) AS(
SELECT '01-02',    '01',    30000 FROM dual UNION ALL
SELECT '01-08',    '01',    2000 FROM dual UNION ALL
SELECT '01-15',    '02',    5000 FROM dual UNION ALL
SELECT '02-05',    '05',    30000 FROM dual UNION ALL
SELECT '02-22',    '03',    2000 FROM dual
),
입고테이블(일자, 입고수량) AS(
SELECT '01-03',    5 FROM dual UNION ALL
SELECT '02-05',    10 FROM dual UNION ALL
SELECT '02-22',    55 FROM dual
),
출고테이블(일자, 출고수량) AS(
SELECT '01-05',    5 FROM dual UNION ALL
SELECT '01-08',    3 FROM dual UNION ALL
SELECT '02-20',    7 FROM dual UNION ALL
SELECT '02-22',    1 FROM dual UNION ALL
SELECT '02-25',    5 FROM dual
)
SELECT 일자
     , MAX(입금구분) 입금구분, SUM(입금액) 입금액 
     , MAX(지급구분) 지급구분, SUM(지급액) 지급액
     , SUM(입고수량) 입고수량, SUM(출고수량) 출고수량 
  FROM (SELECT 일자,   입금구분,  입금액,'' 지급구분,0 지급액,0 입고수량,0 출고수량 
          FROM 입금테이블
         UNION ALL
        SELECT 일자,'' 입금구분,0 입금액,   지급구분,  지급액,0 입고수량,0 출고수량 
          FROM 지급테이블 
         UNION ALL
        SELECT 일자,'' 입금구분,0 입금액,'' 지급구분,0 지급액,  입고수량,0 출고수량 
          FROM 입고테이블 
         UNION ALL
        SELECT 일자,'' 입금구분,0 입금액,'' 지급구분,0 지급액,0 입고수량,  출고수량 
          FROM 출고테이블 
        )
 GROUP BY 일자
 ORDER BY 일자 

by 비니 [2013.02.02 15:05:04]
정말 감사합니다 (__ )
많은 도움 되었습니다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입