2017-03-27 10 views
1

指定した数量の注文を有効期限までにmysqlデータベースアイテムで選択したいとします。 例:SELECT 500 RM1181 出力は、IDが16および1のデータでなければなりません。優先度は最も近い有効期限の項目です。 itemID16は最初に期限切れですが、その100だけですので、次のitemIDが必要です。itemID 1合計クエリの選択

以下のコードは現在のものです。

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)のSAをご提示ください'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