I am trying to solve a problem of how to find the maximum count of consecutive years in a series of records. In the following example:
ID Year 1 1993 1 1994 1 19
Try:
with cte as
(select t.id, t.year, d.d, row_number() over (partition by t.id, d.d
order by t.year) rn
from (select -1 d from dual union all select 1 d from dual) d
cross join my_table t
where not exists
(select null
from my_table o
where t.id = o.id and t.year = o.year-d.d) )
select s.id, max(e.year-s.year)+1 year_count
from cte s
join cte e on s.id = e.id and s.rn = e.rn and e.d=1
where s.d=-1
group by s.id
SQLFiddle here.