我有一个表(实际上是一个子查询结果),其元组为DATE
和NUMBER
。日期是无间隙的,并在给定的时间内排序。
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与前一天相比发生了变化?
答案 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;