Sql 为每个零件选择两个最新条目

Sql 为每个零件选择两个最新条目,sql,ms-access,Sql,Ms Access,我正在使用Access 2013。表1有PK quote_id,是来自不同供应商的不同零件的报价列表。如何获取每个零件、供应商组合的前2个最新报价 这是我目前正在使用的,但就性能而言,这是非常低效的。有没有更好的查询来实现这一点?谢谢 SELECT a.part_id, a.vendor_id, a.quote_date FROM Table1 AS a WHERE a.quote_date > DATEADD("yyyy", -3, DATE()) AND a.quote_date I

我正在使用Access 2013。表1有PK quote_id,是来自不同供应商的不同零件的报价列表。如何获取每个零件、供应商组合的前2个最新报价

这是我目前正在使用的,但就性能而言,这是非常低效的。有没有更好的查询来实现这一点?谢谢

SELECT a.part_id, a.vendor_id, a.quote_date
FROM Table1 AS a
WHERE a.quote_date > DATEADD("yyyy", -3, DATE()) AND 
a.quote_date IN 
 (SELECT TOP 2 quote_date 
 FROM Table1 
 WHERE quote_date > DATEADD("yyyy", -3, DATE()) AND 
 part_id=a.part_id AND vendor_id=a.vendor_id 
 ORDER BY quote_date DESC)

这应该是可行的,但没有办法从这里测试它-

选择零件id、供应商id、报价日期 从中选择a.part\u id、a.vendor\u id、a.quote\u date、, 按a.part\u id划分的行号,按a.quote\u日期描述按a.quote\u日期排序的a.vendor\u id订单 从表1中作为 其中a.quote_date>DATEADDyyyy,-3,日期b
其中b.quote_Date_Seq我认为access不支持行数或分区方式: