如何在日期/值元组行中获取值更改的日期?

时间:2014-02-07 14:43:00

标签: sql oracle

我有一个表(实际上是一个子查询结果),其元组为DATENUMBER。日期是无间隙的,并在给定的时间内排序。

countdate  | countvalue
-----------------------
2014-01-01 | 5
2014-01-02 | 5
2014-01-03 | 5
2014-01-04 | 4
2014-01-05 | 4
2014-01-06 | 4
2014-01-07 | 5

我如何选择所有countdates(具有相应的countvalue),其中countvalue与前一天相比发生了变化?

1 个答案:

答案 0 :(得分:1)

ANSI标准lag()功能可以满足您的需求:

select s.countdate, s.countvalue
from (select s.*, lag(countvalue) over (order by countdate) as prevvalue
      from (<subquery>) s
     ) s
where prevvalue is null or prevvalue <> countvalue;