获取项目数量从零变为非零的日期

时间:2013-12-23 17:05:24

标签: mysql

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

到目前为止我已经

   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

1 个答案:

答案 0 :(得分: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)