У меня есть база данных Oracle, где я пытаюсь выбрать поле user
из самой ранней строки (на основе поля time
), где выполняются определенные условия, и я не знаю, как это сделать. Вот суть моего запроса:
SELECT id,
CASE WHEN value = 'xyz'
THEN 'Pending'
ELSE 'Not Pending'
END AS status,
time
FROM table1
INNER JOIN ...
WHERE subject IN (...) AND
field = 'Status'
Моя проблема в том, что я не знаю, как ВЫБРАТЬ user
и получать только значение из строки с самым ранним значением time
, соответствующим условиям WHERE. Я не думаю, что могу использовать HAVING
, так как я не делаю никаких агрегатных функций в моем SELECT. «Самое раннее time
значение» должно применяться только к для выбора поля user
, т. Е. Я хочу, чтобы id
и value
были выбраны для all значения поля time
.
Я думал, что мог бы сохранить приведенный выше оператор SELECT, а затем СОЕДИНИТЬ с другим оператором SELECT, который получает конкретный user
, который я хочу.
SELECT id, status, time, user
FROM (
...query above...
),
(
SELECT user
FROM table1
WHERE subject in (...) AND
field = 'Status' AND
ROWNUM = 1
ORDER BY time ASC
)
Однако, это получает только одно значение для user
в целом, и должно быть отдельное значение user
для каждого id
SELECT в моем первом запросе. Как ограничить мой запрос SELECT user
полем id
другого запроса? Это даже правильный подход, чтобы получить то, что я хочу?