Pokud používáte SQL-Server (minimálně 2005), můžete použít CTE
s ROW_NUMBER
funkce. Můžete použít CAST
pro verzi, abyste získali správné pořadí:
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
vrací vždy jeden záznam, i když je více uživatelů se stejnou (nejvyšší) verzí. Pokud chcete vrátit všechny "top-version-user-records", musíte nahradit ROW_NUMBER
s DENSE_RANK
.