Als u SQL-Server (minimaal 2005) gebruikt, kunt u een CTE
. gebruiken met de ROW_NUMBER
functie. U kunt CAST
. gebruiken voor versie om de juiste volgorde te krijgen:
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
geeft altijd één record terug, ook als er meerdere gebruikers zijn met dezelfde (top)versie. Als u alle "top-version-user-records" wilt retourneren, moet u ROW_NUMBER
vervangen met DENSE_RANK
.