GROUP BY para filas continuas en SQL

Dada la siguiente tabla:

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

Pregunta:
¿Cómo puedo agrupar por el campo "Estado", mientras se mantienen los límites entre los cambios de estado?

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

resultados en lo siguiente:

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


pero esto se espera:

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


¿Es esto posible en SQL? No encontré una solución hasta ahora ...

Respuestas a la pregunta(4)

Su respuesta a la pregunta