It would be possible by two step calculations. Like:
(Updated indentions)
Code:
------------------------------ Commands Entered ------------------------------
SELECT date_column
, DAYS(date_column)
- MAX(CASE
WHEN cont_flag = 0 THEN
DAYS(date_column)
END)
OVER(ORDER BY date_column
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW)
+ 1 AS id
FROM (
SELECT date_column
, CASE
WHEN MAX(date_column)
OVER(ORDER BY date_column
ROWS BETWEEN 1 PRECEDING
AND 1 PRECEDING)
= date_column - 1 DAY THEN
1
ELSE 0
END AS cont_flag
FROM Table_date
) S
;
------------------------------------------------------------------------------
DATE_COLUMN ID
----------- -----------
2009-05-01 1
2009-05-05 1
2009-05-09 1
2009-05-10 2
2009-05-11 3
2009-05-17 1
2009-05-18 2
2009-05-21 1
2009-05-27 1
2009-05-28 2
10 record(s) selected.
I'll try to find simpler way.