2017-03-27 4 views
1

만료일을 기준으로 주어진 수량 주문을 사용하여 mysql 데이터베이스 항목을 선택하고 싶습니다. 예 : SELECT 500 RM1181 출력은 ID가 16 및 1 인 데이터 여야합니다. 우선 순위는 가장 가까운 만료 날짜가있는 항목이므로. itemID 16은 처음 만료되지만 100 만이므로 itemID는 다음 항목이 필요합니다. 1sum 쿼리 선택

아래 코드는 현재 가지고있는 코드입니다.

SELECT 
O.ID, 
O.itemcode, 
O.qty, 
O.expdate 
(SELECT 
sum(qty) FROM put_in 
WHERE itemcode = 'RM1181') 'RunningTotal' 
FROM put_in O WHERE itemcode = 'RM1181' 
HAVING RunningTotal >= 500 ORDER by expdate 
+0

질문을 편집하고 우리에게 1) 사를 제시해주십시오 'put_in' 테이블에 대한 데이터, 그리고 b) 예상 출력. –

+0

누적 합계를 이해할 수 없습니다. 이걸 어떻게 계산하고 있니? –

+0

누적 합계가 필요한 수량입니다. – Chris

답변

1
SELECT t.ID, t.itemcode, t.qty, t.expdate, t.total 
FROM 
(
    SELECT t1.ID, 
      t1.itemcode, 
      t1.qty, 
      t1.expdate, 
      (SELECT SUM(t2.qty) FROM put_in t2 
      WHERE t2.expdate <= t1.expdate AND t2.itemcode = 'RM1181') AS total 
    FROM put_in t1 
    WHERE t1.itemcode = 'RM1181' 
) t 
WHERE t.total - t.qty < 500 AND 
     t.itemcode = 'RM1181' 
ORDER BY t.expdate; 

출력 : 여기

enter image description here

데모 :

Rextester

+0

거기에 오타가있었습니다. 죄송합니다. 부질의는't1'이 아니라't2'라고 라벨을 붙여야합니다. –

+0

출력은 수량 600 및 1800 인 항목입니다. expdate Sir을 기준으로 100 및 600이어야합니다. – Chris

+0

그것은 작동합니다! 양해 해 주셔서 감사합니다. – Chris