....arba sitaip :)
with dummy_tbl as
(
select to_date('20100103', 'yyyymmdd') stamp from dual union all
select to_date('20100104', 'yyyymmdd') from dual union all
select to_date('20100105', 'yyyymmdd') from dual union all
select to_date('20100120', 'yyyymmdd') from dual union all
select to_date('20100121', 'yyyymmdd') from dual union all
select to_date('20100122', 'yyyymmdd') from dual union all
select to_date('20100123', 'yyyymmdd') from dual union all
select to_date('20100201', 'yyyymmdd') from dual union all
select to_date('20100202', 'yyyymmdd') from dual
)
select
group_id,
q2.stamp,
first_value (q2.stamp) over (partition by q2.group_id order by q2.stamp)
start_date,
first_value (q2.stamp) over (partition by q2.group_id order by q2.stamp
desc) end_date
from
(
select
q1.stamp,
sum (q1.start_of_group) over (order by q1.stamp) group_id
from
(
select
t.stamp,
lag (t.stamp, 1, t.stamp) over (order by t.stamp) pre_stamp,
t.stamp - lag (t.stamp, 1, t.stamp-11) over (order by t.stamp) stamp_diff,
case when t.stamp - lag (t.stamp, 1, t.stamp-11) over (order by t.stamp) >
1 then 1 end start_of_group
from dummy_tbl t
) q1
) q2