Я пытаюсь создать оператор SQL для извлечения значений образца из БД. Таблица содержит значения, относящиеся к смене инструмента на станке с ЧПУ. Текущий оператор, который у меня есть, правильно извлекает значения, но только в том случае, если для данной программы есть одно вхождение инструмента. Если инструмент появляется несколько раз, значения времени соответствуют от первой загрузки до последней загрузки. Существует только один столбец TIME, и, найдя его первое и последнее вхождение, я могу определить время входа/выхода инструментов.
Основной пример:
Raw Data:
Tool_Number TIME
100 12:00
100 12:01
100 12:02
100 12:03
Current Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:03
Однако, когда инструмент появляется несколько раз, все становится сложно, поскольку я больше не могу использовать правила TOP и DISTINCT.
Raw Data:
Tool_Number TIME
100 12:00
100 12:01
100 12:02
100 12:03
200 12:04
200 12:05
100 12:06
100 12:07
Current Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:07
200 12:04 12:05
Ideal Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:03
200 12:04 12:05
100 12:06 12:07
Мы проводим временной анализ, и, конечно, это серьезно портит значения общего времени. Текущий запрос:
SELECT * FROM (SELECT DISTINCT SPINDLE_POT FROM TBL_SPINDLE_DATA_M1
WHERE TIME BETWEEN '4/3/20131:24:13 PM' AND '4/3/2013 3:07:33 PM') AS A
CROSS APPLY
((SELECT TOP 1 TIME FROM TBL_SPINDLE_DATA_M1 B WHERE B.SPINDLE_POT = A.SPINDLE_POT AND
TIME BETWEEN '4/3/2013 1:24:13 PM' AND '4/3/2013 3:07:33 PM') AS NEWTABLE1
JOIN
(SELECT TOP 1 TIME FROM TBL_SPINDLE_DATA_M1 B WHERE B.SPINDLE_POT = A.SPINDLE_POT
AND TIME BETWEEN '4/3/2013 1:24:13 PM' AND '4/3/2013 3:07:33 PM' ORDER BY TIME DESC)
AS NEWTABLE2 ON (0=0))
Я ни в коем случае не являюсь экспертом по SQL Query! Приведенный выше запрос может быть ужасно неправильным, но на самом деле он возвращает то, что мне нужно. Можно ли как-то сгруппировать похожие элементы, но быть достаточно рассудительным, чтобы не группировать их, если их индексы не соприкасаются друг с другом?
APPLY
, но вы должны убедиться, что вы пометили свои вопросы соответствующей базой данных. - person Taryn   schedule 04.04.2013