Om du använder SQL-Server (minst 2005) kan du använda en CTE
med ROW_NUMBER
fungera. Du kan använda CAST
för version för att få rätt ordning:
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
returnerar alltid en post även om det finns flera användare med samma (översta) version. Om du vill returnera alla "top-version-user-records" måste du ersätta ROW_NUMBER
med DENSE_RANK
.