Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我如何按物品何时缺货列出物品_Sql - Fatal编程技术网

Sql 我如何按物品何时缺货列出物品

Sql 我如何按物品何时缺货列出物品,sql,Sql,我有一个表格,列出了我库存中的物品、手头总数量、订单数量和发货日期 +-------+-----------+------------+----------+ | Items | QtyOnHand | QtyOrdered | ShipDate | +-------+-----------+------------+----------+ | Itema | 100 | 80 | 3/4/14 | | Itemb | 80

我有一个表格,列出了我库存中的物品、手头总数量、订单数量和发货日期

+-------+-----------+------------+----------+ | 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 任何帮助都将不胜感激


我想你可能想要这样的东西:

选择项目、发货日期、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