【问题标题】:Get the date when an item's quanity changes from zero to non-zero获取项目的数量从零变为非零的日期
【发布时间】:2025-12-13 10:35:01
【问题描述】:

我正在尝试构建一个查询来使用收到商品的日期更新表格。数量将从零变为非零数。我们每天都会存储系统中每个项目的记录。

到现在为止

   SELECT dw1.system_id, dw1.item, dw2.date
    FROM dw_inventory_detail dw1
    INNER JOIN dw_inventory_detail dw2 ON dw2.item = dw1.item AND  dw2.system_id = dw1.system_id AND dw1.quantity != dw2.quantity 
    WHERE dw1.system_id = '010000'
    AND dw1.item = 'AGRS'
    AND dw1.quantity = 0

这给了我

  • 010000 AGRS 2013-03-27
  • 010000 AGRS 2013-03-28
  • 010000 AGRS 2013-03-29
  • 010000 AGRS 2013-03-30
  • 010000 AGRS 2013-03-31
  • 010000 AGRS 2013-04-01
  • 010000 AGRS 2013-04-14
  • 010000 AGRS 2013-04-15
  • 010000 AGRS 2013-04-16
  • 010000 AGRS 2013-04-17

这几乎是正确的,但每次数量变化时都会给我一行。我只需要数量从零变为非零的日期。

我还没有开始查询的更新部分。我需要先让这部分工作。

原始数据如下所示

  • 2013-03-27 010000 AGRS 1200
  • 2013-03-28 010000 AGRS 1200
  • 2013-03-29 010000 AGRS 400
  • 2013-03-30 010000 AGRS 400
  • 2013-03-31 010000 AGRS 400
  • 2013-04-01 010000 AGRS 400
  • 2013-04-02 010000 AGRS 0
  • 2013-04-03 010000 AGRS 0
  • 2013-04-04 010000 AGRS 0
  • 2013-04-05 010000 AGRS 0
  • 2013-04-06 010000 AGRS 0
  • 2013-04-07 010000 AGRS 0
  • 2013-04-08 010000 AGRS 0
  • 2013-04-09 010000 AGRS 0
  • 2013-04-10 010000 AGRS 0
  • 2013-04-11 010000 AGRS 0
  • 2013-04-12 010000 AGRS 0
  • 2013-04-13 010000 AGRS 0
  • 2013-04-14 010000 AGRS 3200
  • 2013-04-15 010000 AGRS 3200

【问题讨论】:

  • 告诉我们“你得到了什么”而不告诉我们“你有什么”是疯狂的。

标签: mysql


【解决方案1】:
SELECT dw1.system_id, dw1.item, dw2.date
    FROM dw_inventory_detail dw1
    INNER JOIN dw_inventory_detail dw2 ON dw2.item = dw1.item 
    AND  dw2.system_id = dw1.system_id 
    AND dw1.quantity != dw2.quantity 
    AND (dw1.quantity = 0 OR dw2.quantity = 0)
    WHERE dw1.system_id = '010000'
    AND dw1.item = 'AGRS'

已添加注释AND (dw1.quantity = 0 OR dw2.quantity = 0)

【讨论】:

  • 这几乎就是我所需要的。它给了我一个更好的起点。谢谢。