만약 202310월 과 202311월이 차감되면서,
202311월에는 202310월에 차감된것 까지 똑같이 적용하고싶다면
SQL 로직만으로도 구성이 가능할까요???
프로시저에서 FOR문 쓰는 방식으로 고민해봐야할까요
원하는답
202310 을 차감하고
202311 에는 202310 + 202311 수량을 차감합니다.
MONTH | 제품 | 수량 | 창고A | 창고B | 창고C | 창고D |
202310 | A | 50 | 100 | 100 | 100 | 50 |
202310 | B | 150 | 100 | 100 | 50 | 0 |
202310 | C | 250 | 100 | 50 | 0 | 0 |
202311 | A | 50 | 100 | 100 | 100 | 100 |
202311 | B | 150 | 100 | 0 | 0 | 0 |
202311 | C | 250 | 0 | 0 | 0 | 0 |
WITH t AS ( SELECT '202310' month, 'A' 제품, 50 수량 FROM dual UNION ALL SELECT '202310', 'B', 150 FROM dual UNION ALL SELECT '202310', 'C', 250 FROM dual UNION ALL SELECT '202311' month, 'A' 제품, 50 수량 FROM dual UNION ALL SELECT '202311', 'B', 150 FROM dual UNION ALL SELECT '202311', 'C', 250 FROM dual ) , s AS ( SELECT '202310' month, 'A' 제품, 100 창고A, 100 창고B, 100 창고C, 100 창고D FROM dual UNION ALL SELECT '202310', 'B', 100, 100,100, 100 FROM dual UNION ALL SELECT '202310', 'C', 100, 100,100, 100 FROM dual UNION ALL SELECT '202311' month, 'A' 제품, 100 창고A, 100 창고B, 100 창고C, 100 창고D FROM dual UNION ALL SELECT '202311', 'B', 100, 100,100, 100 FROM dual UNION ALL SELECT '202311', 'C', 100, 100,100, 100 FROM dual ) SELECT a.month , a.제품 , a.수량 , LEAST(b.창고A, GREATEST(0, b.창고D + b.창고C + b.창고B + b.창고A - a.수량)) 창고a , LEAST(b.창고B, GREATEST(0, b.창고D + b.창고C + b.창고B - a.수량)) 창고b , LEAST(b.창고C, GREATEST(0, b.창고D + b.창고C - a.수량)) 창고c , LEAST(b.창고D, GREATEST(0, b.창고D - a.수량)) 창고d FROM t a , s b WHERE a.month = b.month AND a.제품 = b.제품 ;