SQL-Server (最小 2005) を使用している場合は、CTE
を使用できます ROW_NUMBER
で 関数。 CAST
を使用できます 正しい順序を取得するためのバージョン:
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
同じ (トップ) バージョンのユーザーが複数いる場合でも、常に 1 つのレコードを返します。すべての "top-version-user-records" を返したい場合は、ROW_NUMBER
を置き換える必要があります DENSE_RANK
で .