2016-12-29 8 views
0

私のテーブルに私は列id,userIdおよびpointsを持っています。私の質問の結果、ユーザーごとに最高点を含むレコードのIDを取得したいと考えています。私の経験でSQL Server:別の列のmaxを使用してIDの列を返します

(SQL Server以外のMySQLでより多くの)私はこの結果を取得するには、次のクエリを使用します。

SELECT id, userId, max(points) 
FROM table 
GROUP BY userId 

をしかし、選択のすべての列もする必要がありますので、SQL Serverは、これを許可しません。 GROUP BYにあるか、集約関数である必要があります。

これは仮説的な状況です。私の実際の状況はずっと複雑です!

答えて

4

使用SQL Server

Select * from 
(
select Row_Number() over(partition by userId Order by points desc) Rn,* 
From yourtable 
) A 
Where Rn = 1 
ROW_NUMBER窓関数
関連する問題