2014-01-14 2 views
0

У меня есть SQL результаты:Как я могу таблица групп высочайшими записей

+----------+-----+--------+ 
|rewardID |count|playerID| 
+----------+-----+--------+ 
|BurgerKing|5 |1  | 
+----------+-----+--------+ 
|BurgerKing|4 |2  | 
+----------+-----+--------+ 
|KFC  |1 |1  | 
+----------+-----+--------+ 
|KFC  |5 |2  | 
+----------+-----+--------+ 

, как я могу сделать, чтобы это было как

+----------+-----+--------+ 
|rewardID |count|playerID| 
+----------+-----+--------+ 
|BurgerKing|5 |1  | 
+----------+-----+--------+ 
|KFC  |5 |2  | 
+----------+-----+--------+ 

Я имею в виду выбора игрока, который получит наибольшее вознаграждение за каждую награду подряд

ответ

0

Попробуйте ниже

select Y.rewardId,Y.count,[playerId] from YourTable Y 
join (select [rewardId],MAX([count]) as [count] from YourTable group by [rewardId]) as Y1 
on Y.rewardId=Y1.rewardId and Y.[count]=Y1.[count] 

Пробовал следующую таблицу.

CREATE TABLE [dbo].[yourtable]([rewardid] [nvarchar](50) NULL, [count] [int] NULL, [playerid] [int] NULL) 
INSERT INTO [dbo].[yourtable] ([rewardid] ,[count] ,[playerid]) 
VALUES ('Burger King', 5,1), ('Burger King', 4,2), ('KFC',1,1), ('KFC',6,2) GO 

И это дало мне результат

rewardid count playerid 
Burger King 5  1 
KFC   6  2 
+0

кажется прохладным. спасибо, но каким-то образом лучше? – user3193307

+0

Это не работает. Попробуйте запустить запрос с 'insert в значения вознаграждения ('BurgerKing', 5, 1), ('BurgerKing', 4, 2), ('KFC', 5, 1), ('KFC', 6, 2)' , –

+0

Да, я нашел его. не работает! извините – user3193307

0
select yourtable.rewardid,yourtable.count,yourtable.playerid from yourtable left join (select distinct rewardid, max(count) OVER (PARTITION BY rewardid) as maxcount from yourtable) source 
on source.rewardid=yourtable.rewardid and source.maxcount=yourtable.count where source.maxcount is not null 

Этот ответ предполагает, что мы хотим, чтобы записи для каждой награды ид

0
select t.rewardId,t.count,playerId from tableName as t  
join 
(select rewardId,MAX([count]) as cnt 
from tableName 
group by rewardId 
) as t1 
on t.rewardId=t1.rewardId and t.count=t1.cnt 
Смежные вопросы