테이블 A
품목 | 수량 | 위치
테이블 B
품목 | 수량
테이블 B 에서 TV 가 10개 이면
테이블 A 에서 TV 가 위치 ASC 기준으로
A 2
B 5
C 4
가져와야 합니다.
즉 10개를 빼야하는데 테이블 A에서 위치 A에서 2개 B에서 5개 C에서 3개를 빼기위해
위치를 가져와야 하는거죠.
아...어떻게 할까요?
WITH a AS ( SELECT 'TV' item, 2 qty, 'A' loc FROM dual UNION ALL SELECT 'TV', 5, 'B' FROM dual UNION ALL SELECT 'TV', 4, 'C' FROM dual ) , b AS ( SELECT 'TV' item, 10 qty FROM dual ) SELECT item , b_qty , a_qty , LEAST(a_qty, b_qty - sum_qty + a_qty) c_qty , loc FROM ( SELECT b.item , b.qty b_qty , a.qty a_qty , a.loc , SUM(a.qty) OVER(PARTITION BY a.item ORDER BY a.loc) sum_qty FROM a, b WHERE a.item = b.item ) WHERE b_qty > sum_qty - a_qty ;
아...감탄~~~
감사합니다. ^^