Si vous utilisez SQL-Server (minimum 2005) vous pouvez utiliser un CTE
avec le ROW_NUMBER
fonction. Vous pouvez utiliser CAST
pour la version pour obtenir le bon ordre :
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
renvoie toujours un enregistrement même s'il y a plusieurs utilisateurs avec la même version (top). Si vous souhaitez renvoyer tous les "top-version-user-records", vous devez remplacer ROW_NUMBER
avec DENSE_RANK
.