sql server从组中选择第一行

Rn2*_*2dy 46 sql-server

我有这样的表:

a          b
1          23
1          2
1          7
2          9
2          11
Run Code Online (Sandbox Code Playgroud)

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

a          b
1          23
2          9
Run Code Online (Sandbox Code Playgroud)

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

rem*_*rel 94

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
Run Code Online (Sandbox Code Playgroud)

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

  • 当从每个组的行中只有一个其他值(如此处)时,使用"MIN"或"MAX"更简单(您的示例相当于只选择"MAX(b)").当然,对于更多列,它更有意义. (4认同)

Lie*_*ers 56

如果您指出,顺序无关紧要,任何聚合函数b足够了.

示例使用MIN

SELECT a, b = MIN(b)
FROM   YourTable
GROUP BY
       a
Run Code Online (Sandbox Code Playgroud)

  • 这太荒谬了.Doge完全赞同. (5认同)
  • 这是错的.解决方案找到MIN而不是FIRST.上面的评论要好得多. (2认同)