Ако използвате SQL-Server (минимум 2005), можете да използвате CTE
с ROW_NUMBER
функция. Можете да използвате CAST
за версия, за да получите правилния ред:
WITH cte
AS (SELECT id,
userid,
version,
datetime,
Row_number()
OVER (
partition BY userid
ORDER BY Cast(version AS INT) DESC) rn
FROM [dbo].[table])
SELECT id,
userid,
version,
datetime
FROM cte
WHERE rn = 1
ORDER BY userid
ROW_NUMBER
връща винаги един запис, дори ако има няколко потребители с една и съща (горна) версия. Ако искате да върнете всички „топ-версия-потребителски записи“, трябва да замените ROW_NUMBER
с DENSE_RANK
.