아래 샘플 테이블 두개을 예를 들었습니다.
(
select 'a' item , 30 qty from dual
union all
select 'b' item, 50 qty from dual
) tableA
(
select 'a' item , 20 qty, '20110101' cdate from dual
union all
select 'a' item , 30 qty, '20110102' cdate from dual
union all
select 'a' item , 30 qty, '20110103' cdate from dual
union all
select 'b' item , 20 qty, '20110101' cdate from dual
union all
select 'b' item , 30 qty, '20110102' cdate from dual
) tableB
tableB를 기준으로 tableA를 빼는 개념인데요
예를 들어 item 'a'의 경우 30 qty를 tableB의 'a'들에서 빼는데요
날짜가 가장 이전꺼 부터 빼 나갑니다
처음에 20을 빼고 다음 30에서 나머지 10을 빼면 20이 남는거죠
따라서 실제 원하는 결과는
'a', 20, '20110102'
'a', 30, '20110103'
입니다. ( b는 50 떨어져서 나오지 않음)
쿼리는 어떻게 해야 할까요
6만건정도 입니다 |