WITH t(sales_team_cd, item_cd, rft_yyyywk, rft_qty, po_qty, pr) AS ( SELECT 'KOR', '102620', '201732', 90, 0, 1 FROM dual UNION ALL SELECT 'KOR', '102620', '201733', 100, 90, 2 FROM dual UNION ALL SELECT 'KOR', '102620', '201734', 100, 0, 3 FROM dual UNION ALL SELECT 'KOR', '102620', '201735', 100, 130, 4 FROM dual UNION ALL SELECT 'KOR', '102620', '201736', 100, 50, 5 FROM dual UNION ALL SELECT 'KOR', '102620', '201737', 100, 0, 6 FROM dual UNION ALL SELECT 'KOR', '102628', '201732', 120, 100, 1 FROM dual UNION ALL SELECT 'KOR', '102628', '201733', 150, 150, 2 FROM dual UNION ALL SELECT 'KOR', '102628', '201734', 150, 170, 3 FROM dual UNION ALL SELECT 'KOR', '102628', '201735', 150, 100, 4 FROM dual UNION ALL SELECT 'KOR', '102628', '201736', 150, 50, 5 FROM dual UNION ALL SELECT 'KOR', '102628', '201737', 150, 100, 6 FROM dual ) SELECT sales_team_cd, item_cd, rft_yyyywk, rft_qty, po_qty, pr , accm_rft_qty , accm_po_qty , sum_po_qty , CASE WHEN accm_rft_qty < sum_po_qty THEN 0 WHEN accm_rft_qty - rft_qty < sum_po_qty THEN accm_rft_qty - sum_po_qty ELSE rft_qty END remain_qty FROM (SELECT sales_team_cd, item_cd, rft_yyyywk, rft_qty, po_qty, pr , SUM(rft_qty) OVER(PARTITION BY sales_team_cd, item_cd ORDER BY rft_yyyywk) accm_rft_qty , SUM(po_qty ) OVER(PARTITION BY sales_team_cd, item_cd ORDER BY rft_yyyywk) accm_po_qty , SUM(po_qty ) OVER(PARTITION BY sales_team_cd, item_cd) sum_po_qty FROM t WHERE rft_yyyywk BETWEEN '201732' AND '201737' ) ;