누적하면서 차감하는 쿼리 질문 0 2 1,144

by 잭키올 [2017.08.16 22:36:05]


1212.PNG (81,230Bytes)
1313.PNG (102,400Bytes)

안녕하세요.

RTF 수량에 맞추어 PO 수량을 차감하는 로직을 만들려고 합니다.
RTF 는 정해진 계획구간(유동적)에 RTF 수량이 나오고 PO 수량도 정해진 구간 안에 나오게 됩니다.

계획 구간 안의 PO 수량을 누적한 값과 RTF 수량을 주차별로 누적해가면서 가지는 값부터 PO(주차별) - RTF(주차별) 수량을 넣어주면 됩니다.

위의 데이터를 가지고 아래와 같은 데이터를 구하고 싶습니다.
감사합니다. 

by 마농 [2017.08.17 07:40:28]
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'
        )
;

 


by 잭키올 [2017.08.18 16:08:20]

감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입