sql server从组中选择第一行

时间:2011-09-08 07:43:45

标签: sql-server

我有这样的表:

a          b
1          23
1          2
1          7
2          9
2          11

我想从“GROUP BY a”查询中选择第一行(顺序无关紧要),结果应为

a          b
1          23
2          9

我正在使用SQL SERVER 2008如何为此编写查询?

2 个答案:

答案 0 :(得分:88)

select a,b
from (
select a,b,row_number() over(partition by a order by b desc) as roworder
from myTable
) temp
where roworder = 1

请参阅http://msdn.microsoft.com/en-us/library/ms186734.aspx

答案 1 :(得分:55)

如果您指出,订单无关紧要,b上的任何aggregate function就足够了。

使用MIN的示例

SELECT a, b = MIN(b)
FROM   YourTable
GROUP BY
       a