【发布时间】:2019-12-12 00:28:20
【问题描述】:
我正在尝试使用 LIFO 映射库存,以确定订单最初到达库存的日期到他们离开的日期。但是,库存可以从正变为负。
例如:
第 1 天:购买 1,000 个单位; (库存 1,000 件)
第 2 天:购买 1,000 个单位; (库存 2,000 件)
第 3 天:卖出 500 件; (库存 1,500 件)
第 4 天:购买 2,000 个单位; (库存 3,500 件)
第 5 天:卖出 3,000 台; (库存 500 件)
第 6 天:卖出 10,000 台; (库存 -9,500 件)
我需要知道第 5 天的单位来自第 1 天的最短日期和第 4 天的最长日期。在 SQL 中有没有办法做到这一点?
UPDATE #TEMP_ORDERS_STEP_2
SET CUMULATIVE_UNITS = UNITS
, REMAINING_UNITS = UNITS
, Min_Inventory_Date = 'n/a'
, Max_Inventory_Date = 'n/a'
WHERE Row_ID = 1
AND CUMULATIVE_SHARES IS NULL
--(30609 row(s) affected)
SELECT DateId, OrderID, ProductCode, ProductType, Units, Row_ID, Inventory, CUMULATIVE_UNITS, Min_Inventory_Date, Max_Inventory_Date
FROM #TEMP_ORDERS_STEP_2 A
JOIN (SELECT * FROM #TEMP_ORDERS_STEP_2 WHERE REMAINING_UNITS IS NOT NULL) B
ON A.ProductCode = B.ProductCode AND A.ProductType = B.ProductType AND A.Row_ID = B.Row_ID + 1
WHERE A.CUMULATIVE_SHARES IS NULL
【问题讨论】:
-
出于好奇,您为此使用 RDBMS 而不是队列服务器是否有原因? (例如 MSMQ、RabbitMQ、Kafka 等)?
-
@Dai 这是一个常见的 RDBMS 实现,跟踪订单和库存。您可以在托管队列服务中实现相同事物的元素,但我怀疑此应用程序还有很多其他功能,这意味着在 RDBMS 中管理和跟踪此类数据非常合适。