(SQL-запрос к базе данных Oracle)
Я пытаюсь отобразить номер идентификатора оборудования в записи задания на основе наивысшего приоритета (наименьшего числа) среди всех заданий, связанных с заданием. Мне также нужно отобразить все задачи для задания, поэтому я не могу просто ограничить запрос задачей с наивысшим приоритетом. Поскольку наивысшим приоритетом является 1 (с 2-м на втором месте и т. Д.), Запрос для задачи с приоритетом 1 всегда будет работать. Проблема заключается в том, что иногда задача с приоритетом 1 удаляется, и поэтому задача с приоритетом 2 становится наивысшим приоритетом (нельзя иметь дублирующиеся приоритеты, а приоритет всегда является целым числом).
Вот пример запроса, который работает при извлечении идентификатора оборудования на основе задачи приоритета 1:
SELECT j.title,
j.jobnum,
a.eqid,
a.prior,
a.desc,
b.eqid peqid
FROM JOB j
LEFT JOIN TASK a ON a.jobnum = j.jobnum
LEFT JOIN TASK b ON b.jobnum = j.jobnum
AND b.prior = 1
WHERE j.jobnum = '123'
ORDER BY a.prior
Приведенный выше запрос даст следующие результаты, если он имеет 3 задачи:
TITLE JOBNUM EQID PRIOR DESC PEQID
newjob 123 HAQ7 1 fix this HAQ7
newjob 123 PDL 2 clean this HAQ7
newjob 123 ACCH 3 move this HAQ7
Однако, если задача с приоритетом 1 удалена из задания, теперь вы должны найти задачу с самым низким приоритетом, чтобы назначить заданию идентификатор оборудования.
Я пытался по существу что-то сделать в этом духе, но это не работает (выдает сообщение, что групповая функция здесь не разрешена):
select job.title, job.jobnum, task.eqid, task.prior, task.desc, tp.eqid peqid
from job
left join task on job.jobnum = task.jobnum
left join task tp on job.jobnum = tp.jobnum
and tp.prior = min(tp.prior)
Я исследовал использование подзапроса в объединении с групповой функцией, но, похоже, никогда не смог найти тот, который подходит для того, что я пытаюсь выполнить. Любая помощь будет принята с благодарностью.