我正在实现SQL中的FIFO(先进先出)算法。
我的应用程序中有“批次号”概念。
如果我在库存上销售,我的应用程序应该告诉我哪个库存是最先进来的。
例如,我在8月4日、8月5日和8月6日购买了库存'A'。
On 4th Aug - A Inventory has batch number BT002 - 10 (Qty)
On 5th Aug - A's Inventory has batch number BT003 - 15 (Qty)
On 6th Aug - A's Inventory has batch number BT001 - 10 (Qty)
现在我手上有以下库存:
A Inventory
BT002 - 10 - 4-Aug
BT003 - 15 - 5-Aug
BT001 - 10 - 6-Aug
现在,如果我想把这个库存卖给任何人,我的应用程序应该告诉我,我应该首先出售BT002(批号)库存,因为它是最早的。
这就是我在我的应用程序中使用的概念。
现在我想从“ A”(库存)中销售15个数量。
然后输出应该像这样:
BT002 - 10
BT003 - 5
以下是我的查询:
这里是我的查询:
SELECT ISNULL(SUM(qty),0) AS Qty,batch_no,accept_date FROM RS_GIN_Master
GROUP BY batch_no,accept_date
HAVING ISNULL(SUM(qty),0) <= 15
ORDER BY accept_date asc
给定查询的输出:
![输入图像说明](https://istack.dev59.com/fYpUu.webp)
BT002 - 10
BT003 - 5
任何帮助都将不胜感激。 提前致谢。