Use analytic functions for lead and lag.
create table t3 (d number, v number); insert into t3(d, v) values(1, 1); insert into t3(d, v) values(2, 2); insert into t3(d, v) values(3, 2); insert into t3(d, v) values(4, 3); insert into t3(d, v) values(5, 2); insert into t3(d, v) values(6, 3); insert into t3(d, v) values(7, 4); select d, v, case when v in (prev, next) then '*' end match, prev, next from ( select d, v, lag(v, 1) over (order by d) prev, lead(v, 1) over (order by d) next from t3 ) order by d ;
Corresponding neighbors are marked * in the match column,
alt text http://i28.tinypic.com/2drrojt.png
Janek bogucki
source share