2013-12-23 3 views
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 
    WHERE dw1.system_id = '010000' 
    AND dw1.item = 'AGRS' 
    AND dw1.quantity = 0 

Это дает мне

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

Это почти правильно, но это дает мне строку при каждом изменении количества. Мне нужна только дата, когда quanity переходит от нуля к ненулевому.

Я еще не начал часть обновления. Мне нужно сначала запустить эту часть.

Исходные данные выглядит следующим образом

  • 2013-03-27 010000 начале 1200
  • 2013-03-28 010000 начале 1200
  • 2013-03-29 010000 рано 400
  • 2013- 03-30 010000 начала 400
  • 2013-03-31 010000 начало 400
  • 2013-04-01 010000 начало 400
  • 2013-04-02 010000 Early 0
  • 2013-04-03 010000 Early 0
  • 2013-04-04 010000 Early 0
  • 2013-04-05 010000 Early 0
  • 2013-04-06 010000 рано 0
  • 2013-04-07 010000 рано 0
  • 2013-04-08 010000 рано 0
  • 2013-04-09 010000 рано 0
  • 2013-04-10 010000 рано 0
  • 2013-04-11 010000 Early 0
  • 2013-04-12 010000 Early 0
  • 2013-04-13 010000 Early 0
  • 2013-04-14 010000 начале 3200
  • 2013-04-15 010000 АГРС 3200
+0

указал нам «что вы получите», не сообщая нам «что вы» это ненормальный. – Strawberry

ответ

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)

+0

Это почти то, что мне нужно. Это дает мне лучшую начальную точку. Благодаря. –

Смежные вопросы