【发布时间】:2017-03-07 02:21:40
【问题描述】:
如何在 MS ACCESS 上将 row_number() 函数转换为过度分区? 我想要实现的是:
从这张表:
ID | EntryDate
10 | 2016-10-10
10 | 2016-12-10
10 | 2016-12-31
10 | 2017-01-31
10 | 2017-03-31
11 | 2015-01-31
11 | 2017-01-31
到这个输出,只显示每个 ID 的前 3 个最新的:
ID | EntryDate
10 | 2016-12-31
10 | 2017-01-31
10 | 2017-03-31
11 | 2015-01-31
11 | 2017-01-31
在 SQL Server 上,我可以使用以下代码实现此目的:
select T.[ID],
T.[AptEndDate],
from (
select T.[ID],
T.[AptEndDate],
row_number() over(partition by T.[ID] order by T.[AptEndDate] desc) as rn
from Table1 as T
) as T
where T.rn <= 3;
【问题讨论】: