Elimine y reduzca los intervalos de fechas superpuestos

Tengo un conjunto de rangos de fechas que constan de fechas solapadas parcial y totalmente, como esta:

UserID  StartDate   EndDate 
======  ==========  ==========
1       2011-01-01  2011-01-02  <- A
1       2011-01-01  2011-01-10  <- A
1       2011-01-08  2011-02-15  <- A
1       2011-02-20  2011-03-10  <- B
2       2011-01-01  2011-01-20  <- C
2       2011-01-15  2011-01-25  <- C

Utilizando T-SQL, me gustaría crear un nuevo conjunto de datos, por usuario, con datos superpuestos eliminados, extendiendo rangos y eliminando datos redundantes donde sea necesario, resultando en algo como esto:

UserID  StartDate   EndDate 
======  ==========  ==========
1       2011-01-01  2011-02-15 ('A', three rows combined, extending the range)
1       2011-02-20  2011-03-10 ('B', no change, no overlaps here)
2       2011-01-01  2011-01-25 ('C', two rows combined)

Los cursores están bien si es necesario, pero si puedo prescindir de ellos, sería aún mejor.

Respuestas a la pregunta(1)

Su respuesta a la pregunta