Sql 我如何按物品何时缺货列出物品
我有一个表格,列出了我库存中的物品、手头总数量、订单数量和发货日期 +-------+-----------+------------+----------+ | Items | QtyOnHand | QtyOrdered | ShipDate | +-------+-----------+------------+----------+ | Itema | 100 | 80 | 3/4/14 | | Itemb | 80 | 220 | 3/8/14 | | Itema | 100 | 80 | 3/10/14 | | Itemb | 80 | 100 | 3/12/14 | +-------+-----------+------------+----------+ 我想像这样的回报,包括项目,日期,我们的库存和金额超过库存,我们在该日期 注意:同一项目通常多次出现在列表中,这是实际销售订单的表示。现存量编号是该项目当前的总现存量,并且在每次列出该项目时都是相同的 我的问题是,如果项目a在2014年3月4日装运80箱,并且手头有100箱,那么在2014年3月10日装运的80箱中剩下20箱将短60箱,因此查询将返回项目a 3/10/14-60。以表明基于当前手头值,2014年3月10日,项目a将没有足够的库存来支付订单 Itemb 3/8/14 -140 Itema 3/10/14 -60 任何帮助都将不胜感激Sql 我如何按物品何时缺货列出物品,sql,Sql,我有一个表格,列出了我库存中的物品、手头总数量、订单数量和发货日期 +-------+-----------+------------+----------+ | Items | QtyOnHand | QtyOrdered | ShipDate | +-------+-----------+------------+----------+ | Itema | 100 | 80 | 3/4/14 | | Itemb | 80
肯我想你可能想要这样的东西: 选择项目、发货日期、QTYOND和QtyOrdered 从表名
其中QtyOnHand QtyOrdered<0您没有指定正在使用的DBMS。MSSQL 2012使这一点相当简单:
WITH cteInventory (Items, ShipDate, Stock) As
(
SELECT
Items,
ShipDate,
QtyOnHand - Sum(QtyOrdered) OVER (PARTITION BY Items ORDER BY ShipDate)
FROM
Inventory
)
SELECT
Items,
Min(ShipDate) As Date,
Max(Stock) As Stock
FROM
cteInventory
WHERE
Stock < 0
GROUP BY
Items
ORDER BY
Date
;
你如何知道未来的命运?这似乎是一个可疑的数据结构。我不知道未来的情况。对于每一个预定的发货日期,我只知道我今天手头上有什么。我们表现得好像没有收到任何新的库存,但在发货计划中,我们的库存会用完。我认为您可能需要更具体地说明库存用完的日期。你必须有一些额外的信息,比如每月的平均销售量,才能知道什么时候你会缺货。即便如此,这也只是一个估计。或者你的意思是你想要下一个可用项目的发货日期?只有当当前订单行超过手头总订单时,这才是真的。但是,当列表中有一个特定项目的多个订单,并且每个订单都小于当前的现存量时,日期订单中am项目的每个订单都将来自当前的现存总量,我要查找的是库存用完的日期。对不起,我使用的是SQL 2005