У меня есть набор строк в таблице с идентификатором и временем, я пытаюсь получить строку, у которой время меньше указанного времени, а выбранная строка должна быть максимальной среди остальных.
Я создал временную таблицу и добавил к ней Id и соответствующую дату, теперь я пытаюсь сравнить дату в таблице с конкретной датой, в то же время выбирая ID и Max Date в select, но, к сожалению, вместо этого я получаю несколько строк,Я ищу строку с максимальным временем по прошествии указанного времени
create table temp_test (id varchar2(20),tmstmp date);
Случайная вставка по запросу ниже с данными
insert into temp_test values (10, sysdate);
Вывод запроса выбора
ID TMSTMP
-- -------------------
15 2019-02-15 20:29:31
10 2019-02-15 20:25:51
11 2019-02-15 20:26:00
12 2019-02-15 20:26:08
13 2019-02-15 20:26:16
10 2019-02-15 20:26:22
Теперь я пытаюсь выполнить приведенный ниже запрос
select id, max(TMSTMP) from temp_test
where TMSTMP < TO_DATE('2019-02-15 20:28:00', 'YYYY-MM-DD HH24:MI:SS')
group by id;
Полученный результат похож на - Фактический результат
ID TMSTMP
-- -------------------
13 2019-02-15 20:26:16
11 2019-02-15 20:26:00
12 2019-02-15 20:26:08
10 2019-02-15 20:26:22
Но я искал полученный результат, как показано ниже, так как этомаксимальное время по истечении указанного времени
ID TMSTMP
-- -------------------
10 2019-02-15 20:26:22
Любое другое решение действительно приветствуется. Спасибо
Небольшое редактирование ответа Джона,
что можно сделать, если у меня есть другой столбец с именем name, и я хочу применить к нему пример фильтра;
select *
from temp_test
where name ='TOM' and tmstmp = (select max(tmstmp)
from temp_test
where name ='TOM' and tmstmp < TO_DATE('2019-02-15 20:28:00',
'YYYY-MM-DD HH24:MI:SS'))
Возможно ли здесь удаление дублирующегося сравнения?