В Oracle 9.2.0.8 мне нужно вернуть набор записей, в котором конкретное поле (LAB_SEQ) находится на максимуме (это последовательный массив VARCHAR '0001', '0002' и т. Д.) Для каждого другого поля (WO_NUM) . Чтобы выбрать максимум, я пытаюсь упорядочить по убыванию и выбрать первую строку. Все, что я могу найти на StackOverflow, предполагает, что единственный способ сделать это - использовать коррелированный подзапрос. Затем я использую этот максимум в предложении WHERE внешнего запроса, чтобы получить строку, которую я хочу для каждого WO_NUM:
SELECT lt.WO_NUM, lt.EMP_NUM, lt.LAB_END_DATE, lt.LAB_END_TIME
FROM LAB_TIM lt WHERE lt.LAB_SEQ = (
SELECT LAB_SEQ FROM (
SELECT lab.LAB_SEQ FROM LAB_TIM lab WHERE lab.CCN='1' AND MAS_LOC='1'
AND lt.WO_NUM = lab.WO_NUM ORDER BY ROWNUM DESC
) WHERE ROWNUM=1
)
Однако это возвращает недопустимый идентификатор ошибки lt.WO_NUM. Исследования показывают, что ORacle 8 допускает коррелированные подзапросы только на один уровень в глубину, и предлагает переписать, чтобы избежать подзапроса - то, что, как предполагает обсуждение выбора максимумов, невозможно. Любая помощь в выполнении этого оператора будет принята с благодарностью.