onsulta @SQL para convertir rangos de fechas en registros por día

Requisitos Tengo una tabla de datos que guarda datos en rangos de fechas.Cada registro tiene permitido superponer registros anteriores (el registro tiene unaCreatedOn datetime columna).Nuevo registro puede definir su propio intervalo de fechas si es necesario, por lo tanto, puede superponerse con varios registros anteriores. Cada nuevo registro superpuesto anula la configuración de los registros más antiguos que se superponen.Conjunto resultant

Lo que necesito obtener esget datos por día para cualquier rango de fechas que use superposición de registros. Debería devolver un registro por día con los datos correspondientes para ese día en particular.

Para convertir rangos a días que estaba pensando en tabla de números / fechas y la función definida por el usuario (UDF) para obtener datos para cada día en el rango, pero me pregunto si hay alguna otra (como enmejo* o inclusoMás rápid) forma de hacerlo ya que estoy usando el último SQL Server 2008 R2.

Datos almacenado

Imagine que mis datos almacenados se vean así

ID | RangeFrom | RangeTo  | Starts | Ends  | CreatedOn (not providing data)
---|-----------|----------|--------|-------|-----------
1  | 20110101  | 20110331 | 07:00  | 15:00
2  | 20110401  | 20110531 | 08:00  | 16:00
3  | 20110301  | 20110430 | 06:00  | 14:00 <- overrides both partially
Resultados

Si quisiera obtener datos del 1 de enero de 2011 al 31 de mayo de 2001, la tabla resultante debería tener el siguiente aspecto (filas obvias omitidas):

DayDate | Starts | Ends
--------|--------|------
20110101| 07:00  | 15:00  <- defined by record ID = 1
20110102| 07:00  | 15:00  <- defined by record ID = 1
...                          many rows omitted for obvious reasons
20110301| 06:00  | 14:00  <- defined by record ID = 3
20110302| 06:00  | 14:00  <- defined by record ID = 3
...                          many rows omitted for obvious reasons
20110501| 08:00  | 16:00  <- defined by record ID = 2
20110502| 08:00  | 16:00  <- defined by record ID = 2
...                          many rows omitted for obvious reasons
20110531| 08:00  | 16:00  <- defined by record ID = 2

Respuestas a la pregunta(2)

Su respuesta a la pregunta