2017-04-06 65 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通過:( –