按 id 分组后从 table 获取所有值

Getting all values from table after grouping by id

我有一个 table,其中包含具有三个值 Id、RevisionId 和 Data 的项目。

| Id | RevisionId | Data   |
| 0  | 0          | Value1 |
| 0  | 1          | Value2 |
| 1  | 0          | Value1 |
| 2  | 0          | Value1 |
| 2  | 1          | Value2 |
| 2  | 3          | Value3 |

如果我只想要每个 RevisionId 最高的 Id,我可以像这样创建一个 SQL 语句。

SELECT Id, MAX(RevisionId) AS RevisionId FROM RevisionTable GROUP BY Id

但我不知道如何获取连接到每个 ID 的最大 RevisionId 的数据值。

您可以使用 row_number():

select *
from (
    select t.*, row_number() over(partition by id order by revisionid desc) rn
    from mytable t
) t
where rn = 1

top(1) with ties也想到:

select top (1) with ties t.*
from mytable t
order by row_number() over(partition by id order by revisionid desc) rn