Похоже, вы хотите самую раннюю дату для каждой строки в таблице, которую вы показываете.В вашем вопросе упоминаются две таблицы, но вы видите только одну.
Я рекомендую коррелированный подзапрос в большинстве баз данных:
select b.*
from b
where b.date = (select min(b2.date)
from b b2
where b2.group_id = b.group_id
);
Понятно.Вам нужно сначала join
, а затем использовать row_number()
:
select ab.*
from (select a.group_id, a.id, a.subject, b.date,
row_number() over (partition by a.group_id order by b.date) as seqnum
from A a join
B b
on a.id = b.id
) ab
where seqnum = 1
order by date desc;