SQL Server独特的问题

RPS*_*RPS 1 sql t-sql sql-server group-by greatest-n-per-group

我需要能够为每个具有最大值的名称选择第一行.

我有一张表格如下:

id  name  value

0   JOHN  123
1   STEVE 125
2   JOHN  127
3   JOHN  126
Run Code Online (Sandbox Code Playgroud)

所以我期待回归:

id  name  value

1   STEVE 125
2   JOHN  127
Run Code Online (Sandbox Code Playgroud)

关于如何执行此操作的MSSQL语法的任何想法?

Tho*_*mas 7

在指定SQL Server时,未指定版本.如果您使用的是SQL Server 2005或更高版本,则可以执行以下操作:

With RankedItems As
    (
        Select id, name, value
            , Row_Number() Over ( Partition By name Order By value Desc, id Asc ) As ItemRank
        From Table
    )
Select id, name, value
From RankedItems
Where ItemRank = 1
Run Code Online (Sandbox Code Playgroud)