만약 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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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.제품 ; |