如何选择上次更新的行直到特定日期?

时间:2016-06-27 10:11:35

标签: sql

我们有三个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

我搜索了答案,但无法找到具体的答案。

1 个答案:

答案 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'