检索具有最高值的行

Bra*_*don 1 sql-server-2005

我有这个查询返回表中的所有行:

select Cost, Name, Id
from #Table
Run Code Online (Sandbox Code Playgroud)

它返回一个如下所示的结果集:

Cost   Name    Id
----   ----   ----
-2.00  Item1  1 
4.00   Item2  1 
6.00   Item3  1 
3.00   Item1  2
9.00   Item4  2
Run Code Online (Sandbox Code Playgroud)

我想要做的是从每个具有最高值的ID中获取一行,因此5个结果将成为两个结果:

Cost   Name    Id
----   ----   ----
6.00   Item3  1 
9.00   Item4  2
Run Code Online (Sandbox Code Playgroud)

6.00是Id为1的最高成本,9.00是Id为2的最高成本.

如何更改查询以执行此操作?

Adr*_*der 11

select id, max(cost) MaxCost FROM #Table group by ID
Run Code Online (Sandbox Code Playgroud)

要获取项目名称,您需要将此结果加入到原始项目中,但请记住,找到的组合可能有多组原始值.