Я пытался найти решения, но не смог найти ни одного. Пожалуйста, укажите правильное направление, если дубликат.
[Проблема]
Я хочу запросить список идентификаторов пользователей (('hunter1', 'hunter2', 'hunter3')
) и проверить, согласились ли они с нашей политикой конфиденциальности.
Однако здесь есть одна загвоздка - , даже если userID отсутствует в нашей базе данных, мне нужна строка с этим ID пользователя с «N» для статуса соглашения о политике .
[КАК ЕСТЬ: текущий запрос]
Объяснение запроса: для одного идентификатора пользователя может быть несколько записей, так как этот пользователь мог присоединиться, уйти и снова присоединиться. Проще говоря, этот запрос возвращает идентификатор пользователя и его статус, где этот идентификатор пользователя имеет самый высокий порядковый номер, если этот идентификатор пользователя можно найти несколько раз.
SELECT
userID,
policyAgreementStatus
FROM
MEMBERTABLE m
WHERE
userNoSeq IN (
SELECT
MAX(userNoSeq)
FROM
MEMBERTABLE
WHERE
m.userID = MEMBERTABLE.userID AND MEMBERTABLE.userID IN
('hunter1', 'hunter2', ...)
)
ORDER BY userNoSeq;
Приведенный выше запрос вернет что-то похожее на приведенное ниже, если 'hunter1' не существует в таблице.
userID policyAgreementStatus
-----------------------------------
hunter2 Y
hunter3 N
...
[TO-BE]
Я хочу получить результат, который вернет:
userID policyAgreementStatus
-----------------------------------
hunter1 N
hunter2 Y
hunter3 N
даже когда hunter1 не было на столе.
Самый простой способ, который я могу придумать, - создать временную таблицу или использовать коллекцию PL / SQL и объединить ее с исходной таблицей.
Однако я работаю с базой данных только для чтения, поэтому это невозможно.
Любые идеи будут полезны. Спасибо.