Oracle:如何为特定日期选择带有时间戳的值

时间:2018-12-13 15:29:16

标签: sql oracle

姓名,工资,日期更改

John 100'2017年1月10日'

John 200 '20 -Jan-2017'

John 50'2018年1月20日'

Tom 100'2017年1月10日'

Tom 200 '20 -Jan-2017'

Alice 100 '10 -Jan-2017'

Alice 200 '20 -Jan-2017'

如何在2018年4月1日获得薪水大于100的人?

谢谢

1 个答案:

答案 0 :(得分:0)

一种方法是使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by name order by datechanged desc) as seqnum
      from t
      where datechanged <= date '2018-04-01'
     ) t
where seqnum = 1 and salary > 100;

这将选择截止日期之前的所有行。然后枚举它们,并选择日期最高的一个,并比较薪水。

这假定表中有第一笔薪水。