检索具有最高值的行

时间:2009-09-21 18:09:07

标签: sql-server-2005

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:11)

select id, max(cost) MaxCost FROM #Table group by ID

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

答案 1 :(得分:1)

像这样。

select max(cost) Cost, Name, Id
FROM #Table 
group by ID, Name

答案 2 :(得分:0)

选择max(cost),通过id,name

从tablename group中输入名称