Jika Anda menggunakan SQL-Server (minimal 2005), Anda dapat menggunakan CTE
dengan ROW_NUMBER
fungsi. Anda dapat menggunakan CAST
untuk versi untuk mendapatkan urutan yang benar:
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
mengembalikan selalu satu catatan meskipun ada beberapa pengguna dengan versi (atas) yang sama. Jika Anda ingin mengembalikan semua "catatan pengguna versi teratas", Anda harus mengganti ROW_NUMBER
dengan DENSE_RANK
.