2017-04-06 16 views
0

私はAccess 2013を使用しています。テーブル1にはPK quote_idがあり、さまざまなベンダーから調達されたさまざまな部品の見積もりの​​一覧です。どのようにすべての部品、ベンダーの組み合わせについて上位2つの最新の見積もりを引き出すのですか?各部品に最新の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) 

答えて

0

これは動作するはずですが、ここからそれをテストする方法はありません -

選択part_id、VENDOR_ID、quote_date )a.part_id、a.vendor_id、a.quote_date、 ROW_NUMBERを(SELECT(から(a.part_id、a.vendor_idによるパーティションのa.quote_dateによる並べ替え)quote_Date_Seqとして FROM表1から a.quote_date> DATEADD( "yyyy"、-3、DATE())b ここで、b.quote_Date_Seq < = 2

+0

私はアクセスが行numまたはpartiをサポートしているとは思わないによって: –

関連する問題