GROUP BY dla ciągłych wierszy w SQL

Biorąc pod uwagę następującą tabelę:

ID   State  Date
12   1      2009-07-16 10:00
45   2      2009-07-16 13:00
67   2      2009-07-16 14:40
77   1      2009-07-16 15:00
89   1      2009-07-16 15:30
99   1      2009-07-16 16:00

Pytanie:
Jak można pogrupować według pola „Stan”, jednocześnie zachowując granice między zmianami stanu?

SELECT MIN(ID) AS ID, State, MIN(Date) AS Date, COUNT(ID) AS Count
FROM table GROUP BY State

powoduje, że:

ID   State  Date              Count
12   1      2009-07-16 10:00  4
45   2      2009-07-16 13:00  2


ale to jest oczekiwane:

ID   State  Date              Count
12   1      2009-07-16 10:00  1
45   2      2009-07-16 13:00  2
77   1      2009-07-16 15:00  3


Czy jest to możliwe w SQL? Jak dotąd nie znalazłem rozwiązania ...

questionAnswers(4)

yourAnswerToTheQuestion