2016-06-27 50 views
1

我們有三個ProductIDs,其價格是由日期改變如何選擇最後更新的行直到特定日期?

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 

如何選擇最後每每個產品ID更新價格有效期至2016年6月20日包容性,以獲得下一個輸出:

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'