2017-04-06 46 views
0

我正在使用Access 2013.表1有PK quote_id,并且是来自不同供应商的不同零件的引号列表。我如何为每个零件供应商组合提供前两个最新报价?为每个零件选择两个最近的条目

这是我目前使用的,但在性能方面它效率非常低。有没有更好的查询来实现这一目标?由于

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) 

回答

0

这应该工作,但没有办法从这里测试它 -

选择PART_ID,VENDOR_ID,quote_date 从(SELECT a.part_id,a.vendor_id,a.quote_date, ROW_NUMBER() (分区通过a.part_id,a.vendor_id order by a.quote_date desc)as quote_Date_Seq FROM Table1 AS a WHERE a.quote_date> DATEADD(“yyyy”,-3,DATE())b 其中b.quote_Date_Seq < = 2

+0

我不认为访问支持行号或parti通过:( –

相关问题