Вы можете выбрать один год для каждого id
, используя row_number()
:
select t.*
from (select t.*,
row_number() over (partition by id, year order by id) as seqnum
from t
) t
where seqnum = 1;
Это выбирает произвольный ряд для сохранения. Вы можете настроить order by
, чтобы уточнить, какую строку вы хотите сохранить. Вы можете заказать по rowid
, но нет гарантии, что это «самый ранний» ряд. Для этого вам нужен столбец даты или последовательности.