Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Contar intervalos entre dos fechas.

Estas en el tema de Contar intervalos entre dos fechas. en el foro de SQL Server en Foros del Web. Hola, tengo el siguiente problema que no he podido resolver. Tengo una tabla de Eventos que, entre otros datos, cuenta con columnas Fecha_Inicio y Fecha_Fin ...
  #1 (permalink)  
Antiguo 03/05/2014, 11:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 3 meses
Puntos: 2
Contar intervalos entre dos fechas.

Hola, tengo el siguiente problema que no he podido resolver.

Tengo una tabla de Eventos que, entre otros datos, cuenta con columnas Fecha_Inicio y Fecha_Fin.
Necesito es que a partir de dos fechas de entrada, digamos A y B, me cuente todos los eventos que iniciaron y todos los eventos que finalizaron por fecha entre ese par de fechas.
O sea, que me devuelva algo como esto:
Fecha, Iniciados, Finalizados
F1 0 4
F2 3 1
...
Como la tabla es muy grande, quisiera hacerlo en una misma consulta, pues de lo contrario las operaciones pienso serían demasiado costosas.
De antemano las gracias. Saludos a todos.

Última edición por ericklanford; 03/05/2014 a las 11:30
  #2 (permalink)  
Antiguo 04/05/2014, 02:31
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Contar intervalos entre dos fechas.

Espero que el siguiente te sirva de ayuda:
Código SQL:
Ver original
  1. DECLARE @A DateTime='20140101',
  2.         @B DateTime='20140215';
  3. WITH F AS
  4. (SELECT @A Fecha
  5. UNION ALL
  6. SELECT  DateAdd(DAY,1,Fecha)
  7. FROM    F
  8. WHERE   Fecha<@B)
  9. SELECT  *
  10. FROM    F
  11. OUTER Apply (SELECT COUNT(CASE WHEN F.Fecha=T.Fecha_Inicio THEN 1 ELSE NULL END) Iniciados,
  12.                     COUNT(CASE WHEN F.Fecha=T.Fecha_Fin THEN 1 ELSE NULL END) Finalizados
  13.         FROM    MiTabla T
  14.         WHERE   F.Fecha IN (T.Fecha_Inicio,T.Fecha_Fin)) T
  15. OPTION (MaxRecursion 0);
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Etiquetas: intervalos, siguiente, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:08.