Мне было поручено создать запрос, который будет уведомлять нашу команду, когда две производственные этикетки сканируются за слишком короткий промежуток времени.
Таблицы и поля, которые я использую для этого:
MASTER_LABEL - таблица в порядке создания меток. DISPO_DATE заполняется после сканирования метки в системе.
ID ITEMNO DISPO_DATE STANDARD_ID QTY
-------------------------------------------------
1 ABC (DATE TIME) 12345 4
2 ABC (DATE TIME) 12345 4
3 ABC (DATE TIME) 12345 4
4 EFG (DATE TIME) 45678 20
5 EFG (DATE TIME) 45678 20
6 HIJ (DATE TIME) 91011 14
7 HIJ (DATE TIME) 91011 14
8 ABC (DATE TIME) 12345 4
9 ABC (DATE TIME) 12345 4
СТАНДАРТ - Таблица используется для извлечения времени цикла для расчета среднего времени заполнения контейнера. ЦИКЛЕТ в секундах.
ID CYCLETM(seconds)
----------------------------------
12345 220
45678 105
91011 175
Базовый код, который у меня есть (я знаю, что он должен быть сильно изменен):
SELECT M.ITEMNO, M.DISPO_DATE, (M.QTY * S.CYCLETM) AS "FILL TIME"
FROM MASTER_LABEL M LEFT OUTER JOIN STANDARD S ON S.ID = M.STANDARD_ID
WHERE M.DISPO_DATE >= SYSDATE - .5
ORDER BY M.ITEMNO, M.DISPO_DATE
В конечном счете, я хочу найти разницу в двух последних разах DISPO_DATE и сравнить их с («временем заполнения» * .5) контейнера. Я хотел бы вытащить только разницу во времени DISPO_DATE, которая составляет <("Fill Time" * .5) </p>
Возможно ли это для некоторых подзапросов и групп по?
Я знаю, что возникнут проблемы со сравнением «времени заполнения» в секундах и разницы в DISPO_DATE в формате «ДАТА ВРЕМЕНИ». Как лучше всего бороться с этим?
Будем весьма благодарны за любые сообщения, на которые вы можете направить меня, или за контент, который поможет с этим. Заранее спасибо за помощь.