我们有三个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的价格,直到2016-06-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'
。