В Oracle, есть простой способ выполнить это в одном запросе, или это правильный подход?
SELECT MAX(ID) INTO n_FOO_ID FROM FOO WHERE BAR = n_InputVar and ConditionalFlag IS NULL;
IF n_FOO_ID IS NULL OR n_FOO_ID = 0 THEN
SELECT MAX(ID) INTO n_FOO_ID FROM FOO WHERE BAR = n_InputVar;
END IF;
Что я пытаюсь сделать, это получить максимальный идентификатор, где мое условиесоответствует входной переменной, но имеет приоритет для строк, которые не имеют условного флага.
Большая часть моего опыта работы с базами данных связана с SQL Server, где я хотел бы сделать что-то вроде этого:
SELECT TOP 1 ID INTO @FooID FROM FOO WHERE Bar = @InputVar ORDER BY ConditionalFlag, ID DESC
Но, похоже, это не работает в Oracle или, что более вероятно,... Я не делаю это правильно.Кто-нибудь может дать какой-нибудь совет?
Спасибо!