问题描述
我知道 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;