Я работаю над запросом Oracle SQL системы управления активами. Мой запрос обновляет хранилище данных информацией из таблицы оборудования AMS. К сожалению, AMS - это чушь, и таблица «Оборудование» не содержит даты последнего изменения, и нет никакого способа получить ее с помощью аудита.
Таблица Equipment содержит 2 000 000 записей, поэтому я не хочу обновлять все это в рабочее время. Вместо этого я хочу ограничить его оборудованием, связанным с рабочими заказами, которые были недавно обновлены. Но мне также нужно обновить всю таблицу за одну ночь, чтобы получить новые записи, которые не были прикреплены к рабочим заданиям. Я хотел бы избежать двух импортов, поэтому я не попадаю в ситуацию, когда один импорт изменяется, а другой нет.
Что мне нужно, так это то, что в зависимости от времени дня я могу добавить дополнительное объединение.
Итак, в рабочее время это будет:
SELECT
*
FROM
Equipment
INNER JOIN
( SELECT DISTINCT Equipment_ID FROM Work_Orders
WHERE Work_Orders.Last_Update > SYSDATE - 2
) WO
ON
Equipment.Equipment_ID = WO.Equipment_ID
Но после, скажем, 9 вечера это будет
SELECT
*
FROM
Equipment
В других местах я видел примеры, в которых использовались объединения, где критерии ON были условными, однако я не нашел нигде, где даже наличие объединения является условным. Это вообще возможно?