如何从表中获取 2 个最新值

问题描述

我知道 Access 中的 MAX 函数将为您提供表格中的最后/最大/最新数据。我需要做的是根据 ID 从表中获取两条最近的记录。

所以,给定这个表(我们称之为 tblMyData):

Group       SEQ       Blah1    Blah2
123         1          X1         Y1
123         2          X2         Y2
123         3          X3         Y3
123         4          X4         Y4
456         1          Q1         Z1
456         2          Q2         Z2
456         3          Q3         Z3

我希望得到的数据集是:

Group       SEQ       Blah1    Blah2
123         3          X3         Y3
123         4          X4         Y4
456         2          Q2         Z2
456         3          Q3         Z3

解决方法

这有点棘手。一种方法是相关子查询和 in:

select t.*
from tblMyData as t
where t.seq in (select top 2 t2.seq
                from tblMyData as t2
                where t2.group = t.group
                order by t2.seq desc
               );
            
,

您可以使用相关子查询为每个 group 的每条记录提供编号,并按 group 的降序获取每个 seq 的两条最新记录,如下所示:

select t.* from 
       (select t.*,(select count(*) 
                 from tblmydata tt
                where tt.group = t.group
                  and tt.seq >= t.seq) as rn
          from tblmydata as t
        ) as t
 where t.rn <= 2;