Предполагая, что данные соответствующим образом реагируют на агрегат, вы можете сделать это:
SELECT id, MAX(position), MAX(some_data)
FROM My_Table
GROUP BY id
Если нет, я считаю, что версия имеет необходимые функции OLAP:
WITH Max_Data as (SELECT id, position, data,
ROW_NUMBER() OVER(PARTITION BY id
ORDER BY position DESC) as rowNum
FROM My_Table)
SELECT id, position, data
FROM Max_Data
WHERE rowNum = 1
Вы будетенужен индекс, который включает position
для лучшей производительности.