2016-06-27 7 views
1

我々は3 ProductIDsとその価格を持っているが日によって変化している特定の日付まで最後に更新された行を選択する方法は?

次の出力を得るために包括的な2016年6月20日まで、それぞれのProductIDあたり のみ最後に更新価格を選択する方法
ProductID Price  Date 
1   100  2016-06-01 
2   50  2016-06-05 
3   10  2016-06-10 
2   60  2016-06-15 
1   110  2016-06-20 
3   20  2016-06-25 

ProductID Price 
3   10 
2   60 
1   110 

私は答えを探しましたが、特定のものを見つけることができませんでした。

+0

ご使用のデータベースでご質問ください。 –

答えて

2

各ProductIDの最終日(2016-06-20まで)を返すサブクエリがあります。その結果と参加:

select t1.* 
from tablename t1 
    join (select ProductID, max(Date) Date 
     from tablename 
     where Date <= '2016-06-20' 
     group by ProductID) t2 
    on t1.ProductID = t2.ProductID and t1.Date = t2.Date 

ANSI SQLは予約語としてdateを持っているので、あなたは"Date"としてその列を区切るために必要があるかもしれません。また、ANSI SQLの日付リテラルはdate '2016-06-20'です。

関連する問題