2017-11-21 20 views
0

Microsoft SQL Serverを使用して入力から出力を取得するにはどうすればよいですか? (基本的に、投票が最大のIDごとの行を選択します)。SQL Serverの列の最大値に基づいて行を選択

入力

ID  Label Vote 
----------------------- 
79185673 2  3 
79185673 0  17 
79185724 4  5 
79185724 1  13 
79185724 0  2 
79185900 1  17 
79185900 2  1 
79185900 4  2 
79186190 3  3 
79186190 2  17 

出力

ID  Label Vote 
----------------------- 
79185673 0  17 
79185724 1  13 
79185900 1  17 
79186190 2  17 

答えて

4

使用ROW_NUMBERまたはDENSE_RANK機能Vote列の降順にIDあたりのランクを与え、次に選択します行ha

私は同じVote値に対して同じランクを与えるので、私はDENSE_RANKの機能を好んでいます。

クエリ

;with cte as(
    select [rank] = DENSE_RANK() over(
     partition by [ID] 
     order by [Vote] desc 
    ), * 
    from [your_table_name] 
) 
select [ID], [Label], [Vote] from cte 
where [rank] = 1; 
+0

この答えは、あなたが(https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work [それを受け入れる]を検討してください助け場合)。回答を受け入れることは、貢献者の努力に報酬を与え、他の人が実際の解決策を見つけるのを助けます。 –

関連する問題