A abordagem da função analítica seria algo como
SELECT a, some_date_column
FROM (SELECT a,
some_date_column,
rank() over (partition by a order by some_date_column desc) rnk
FROM tablename)
WHERE rnk = 1
Observe que, dependendo de como você deseja lidar com empates (ou se os empates são possíveis em seu modelo de dados), você pode usar o
ROW_NUMBER
ou o DENSE_RANK
função analítica em vez de RANK
.