Извлечение строк с наибольшим значением - PullRequest
1 голос
/ 21 сентября 2009

У меня есть этот запрос, который возвращает все строки из таблицы:

select Cost, Name, Id
from #Table

Возвращает набор результатов, который выглядит следующим образом:

Cost   Name    Id
----   ----   ----
-2.00  Item1  1 
4.00   Item2  1 
6.00   Item3  1 
3.00   Item1  2
9.00   Item4  2

То, что я хочу сделать, это получить строку из каждого идентификатора с наибольшим значением, чтобы 5 результатов стали двумя результатами:

Cost   Name    Id
----   ----   ----
6.00   Item3  1 
9.00   Item4  2

6,00 - самая высокая стоимость с Id, равным 1, а 9,00 - самая высокая стоимость с Id, равным 2.

Как бы я изменил запрос, чтобы сделать это?

Ответы [ 3 ]

11 голосов
/ 21 сентября 2009
select id, max(cost) MaxCost FROM #Table group by ID

, чтобы получить имя элемента, вам нужно объединить полученный результат с оригиналом, но помните, что для найденной комбинации может быть более 1 набора исходных значений.

1 голос
/ 21 сентября 2009

Как то так.

select max(cost) Cost, Name, Id
FROM #Table 
group by ID, Name
0 голосов
/ 29 сентября 2009

выберите максимум (стоимость), имя из группы имен таблиц по идентификатору, имя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...