Sql 获取每个序列号的第n个记录

Sql 获取每个序列号的第n个记录,sql,ms-access,Sql,Ms Access,我有一张这样的桌子: ID | SerialNumber | SomeData ---|--------------|--------- 1 | 1 | abc 2 | 1 | def 3 | 1 | ghi 4 | 1 | jkl 5 | 2 | mno 6 | 2 | pqr 现在我想要一个查询,它返回每个序列号的每个第n个ID的“SomeData

我有一张这样的桌子:

ID | SerialNumber | SomeData
---|--------------|---------
1  | 1            | abc
2  | 1            | def
3  | 1            | ghi
4  | 1            | jkl
5  | 2            | mno
6  | 2            | pqr
现在我想要一个查询,它返回每个序列号的每个第n个ID的“SomeData”,如果该序列号的第n个ID存在。如果n=2,我想要的输出是:

ID | SerialNumber | SomeData
---|--------------|---------
2  | 1            | def
6  | 2            | pqr

我认为这已经是解决方案的一半了,但我不知道如何让它达到我想要的效果:

MS Access对于这类事情来说是一个糟糕的数据库。您可以使用子查询枚举值,然后将其用于选择:

select t.*
from (select t.*,
             (select count(*)
              from <your table> as t2
              where t2.serialnumber = t.serialnumber and t2.id <= t.id
             ) as seqnum
      from <your table> as t
     ) as t
where seqnum = 2;

中间的子查询实际上并不需要。可以将相关子查询放在where子句中。我觉得这个表格的意图更清楚。

谢谢您的快速回复,您能告诉我我的表格名称需要替换哪个“t”或“t2”吗?我不能完全弄明白。非常感谢你!你能看看我的额外问题吗?@KobeFl。问题应作为新问题提出,不得在评论中提出,也不得编辑已回答的问题。