【问题标题】:How do I list my items by when they will be out of inventory我如何按商品缺货时间列出我的商品
【发布时间】:2014-03-05 19:01:04
【问题描述】:

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

+-------+-----------+------------+----------+ |项目 |手上数量 |订购数量 |发货日期 | +-------+-----------+------------+----------+ |意达 | 100 | 80 | 2014 年 3 月 4 日 | |项目 | 80 | 220 | 2014 年 3 月 8 日 | |意达 | 100 | 80 | 2014 年 3 月 10 日 | |项目 | 80 | 100 | 2014 年 3 月 12 日 | +-------+-----------+------------+----------+

我想要这样的退货,其中包括商品、我们缺货的日期以及我们在该日期的库存金额。

注意:同一商品通常会多次出现在列表中,这是实际销售订单的代表。现有数量是该项目今天的现有总数,并且每次列出该项目时都是相同的。

我的问题是,如果项目 a 于 2014 年 3 月 4 日发货 80 箱并且手头有 100 箱,那么剩余 20 箱在 2014 年 3 月 10 日发货的 80 箱将少 60 箱,因此查询将返回项目 a 3/10/14 -60。表示根据当前的现有价值,2014 年 3 月 10 日项目 a 将没有足够的库存来支付订单。

项目 3/8/14 -140 意达 3/10/14 -60

任何帮助将不胜感激。

【问题讨论】:

  • 以后怎么知道QtyOnHand?这似乎是一个可疑的数据结构。
  • 我不知道未来的qtyonhand。对于每个预定的发货日期,我所知道的就是我今天手头上的东西。我们的行为就像我们没有收到任何新库存一样,在运输计划中我们将用完库存。
  • 我认为您可能需要更具体地说明缺货日期。您必须有一些额外的信息,例如每月的平均销售量,才能了解您何时会缺货。即便如此,这也只是一个估计。还是您的意思是您想要下一个可用商品的发货日期?

标签: sql


【解决方案1】:

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

选择项目、发货日期、(QtyOnHand-QtyOrdered) 来自表名 其中 (QtyOnHand-QtyOrdered)

【讨论】:

  • 只有当当前订单行超过手头总数时才会如此。但是,当列表中有特定项目的多个订单并且每个骑行少于当前手头数量时,日期顺序中 am 项目的每个订单将来自当前手头总数,而我正在寻找的是日期库存用完了。
【解决方案2】:

您尚未指定您使用的 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
;

SQL Fiddle

【讨论】:

  • 对不起,我使用的是 SQL 2005
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多