我试图构造一个查询,用接收到项目的日期更新表。数量将从零变为非零。我们每天都存储系统中每个项目的记录。
到目前为止

   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年3月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年3月31日010000 AGRS 400
2013-04-01 010000 AGRS 400号
2013-04-02 010000阿格斯0
2013年4月3日010000 AGRS 0
2013年4月4日010000 AGRS 0
2013-04-05 010000阿格斯0
2013年4月6日010000 AGRS 0
2013-04-07 010000阿格斯0
2013-04-08 010000阿格斯0
2013-04-09 010000阿格斯0
2013年4月10日010000 AGRS 0
2013年4月11日010000 AGRS 0
2013年4月12日010000 AGRS 0
2013年4月13日010000 AGRS 0
2013年4月14日010000 AGRS 3200
2013年4月15日010000 AGRS 3200

最佳答案

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)

关于mysql - 获取项目数量从零变为非零的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20747938/

10-12 20:31