2017-08-02 62 views
0

我有類似下面的表格,其中用戶會給我一個輸入的任何數量與產品(例如數量 - 5000和產品 - P001),那麼我不得不給他返回行明智的數據..我的意思是在他的批數量將履行它應該是明智的日期..第一結束頂部行與輸入總和

Batch  |Product | Date    | Quantity | 
------------+---------+--------------------+-----------+ 
D001  |P001  | 1Jul2017   | 1000  | 
D002  |P001  | 10Jul2017   | 2000  | 
D003  |P001  | 15Jul2017   | 3000  | 
D004  |P001  | 18Jul2017   | 5500  | 
D005  |P002  | 12Jul2017   | 3000  | 
D006  |P002  | 14Jul2017   | 2000  | 
D007  |P002  | 15Jul2017   | 4000  | 

以及最終輸出應該是這樣的。

Batch  |Product | Date    | Quantity | 
------------+---------+--------------------+-----------+ 
D001  |P001  | 1Jul2017   | 1000  | 
D002  |P001  | 10Jul2017   | 2000  | 
D003  |P001  | 15Jul2017   | 2000  | 
+0

到目前爲止您嘗試過什麼? – SandPiper

+0

我已經嘗試了很多東西,但是所有的廢物都在這裏發佈 –

+0

爲什麼Department在結果集中總是D001? – CiccioRocca

回答

0

你似乎想要一個累計和。我們假設你想要的數量是@quantity。然後 。 。 。

select t.*, 
     (case when cume_q < @quantity then quantity 
      else cume_q - @quantity 
     end) as used_quantity 
from (select t.*, (@q := @q + t.quantity) as cume_q 
     from t cross join 
      (select @q := 0) params 
     where product = @product 
     order by date 
    ) t 
where (cume_q - quantity) < @quantity; 

子查詢計算累計和。你可以單獨運行它,看看發生了什麼。如果您想了解MySQL中的變量,請參考文檔。

外部where只是選擇你想要的行,一旦你有累計和。

+0

不明白髮生了什麼事情。請你讓我明白 –