Не ясно, хотите ли вы установить самую последнюю дату для какой-либо вещи (упорядочение агрегированных вещей по дате или по их собственным значениям):
select name,
listagg(thing, ',') within group (order by date_col) as things,
max(date_col) as now
from your_table
group by name
order by name;
или дата, соответствующая наибольшему значению вещи:
select name,
listagg(thing, ',') within group (order by thing) as things,
max(date_col) keep (dense_rank last order by thing) as now
from your_table
group by name
order by name;
Как вы сказали, на самом деле это даты, когда ваши образцы данных с добавленными значениями даты настроены немного по-разному для двух имен:
NAME THING DATE_COL
---- ---------- ----------
JACK 1 2019-01-01
JACK 2 2019-03-15
JACK 3 2019-04-30
JANE 1 2019-02-01
JANE 2 2019-05-03
JANE 3 2019-04-02
первый запрос получает:
NAME THINGS NOW
---- --------------- ----------
JACK 1,2,3 2019-04-30
JANE 1,3,2 2019-05-03
и второй запрос получает:
NAME THINGS NOW
---- --------------- ----------
JACK 1,2,3 2019-04-30
JANE 1,2,3 2019-04-02
дб <> скрипка