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

Crear rangos de horas y agrupar registros SQL Server 2008

Estas en el tema de Crear rangos de horas y agrupar registros SQL Server 2008 en el foro de SQL Server en Foros del Web. Hola que tal. Mi consulta es sobre SQL Server 2008. Tengo una tabla con tres columnas la primera datos de hora_inicio, la segunda con hora_fin ...
  #1 (permalink)  
Antiguo 19/11/2012, 22:16
 
Fecha de Ingreso: noviembre-2012
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 0
Crear rangos de horas y agrupar registros SQL Server 2008

Hola que tal.

Mi consulta es sobre SQL Server 2008. Tengo una tabla con tres columnas la primera datos de hora_inicio, la segunda con hora_fin ambas son datos tipo varchar, como 00:00:34, 13:45:00 etc. la tercera columna es el numero de ocurrencias en ese horario.

Mi pregunta es : ¿Cómo puedo agrupar las horas por hora? de tal manera que me queden asi:

Rango Ocurrencias
(00:00-01:00] 32
(08:00-09:00)] 434
. .
. .
. .
(24:00-00:00] 356


Que resulten 24 rangos de horas.
  #2 (permalink)  
Antiguo 20/11/2012, 00:05
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Crear rangos de horas y agrupar registros SQL Server 2008

puedes poner algunos datos y resultado esperado como referencia, porque haciendo al adivino se me ocurre

Select Substring(Hora_Inicio,1,2), Sum(ocurrencia) from horas
Group by Subtring (Hora_Inicio,1,2)
Order by 1
  #3 (permalink)  
Antiguo 20/11/2012, 00:07
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Crear rangos de horas y agrupar registros SQL Server 2008

Haría más o menos lo siguiente:
Código SQL:
Ver original
  1. WITH Horas AS
  2. (SELECT '00:00:00' hora_inicio, '01:00:00' hora_fin UNION ALL
  3. SELECT  '01:00:00' hora_inicio, '02:00:00' hora_fin UNION ALL
  4. ..
  5. ..
  6. SELECT  '23:00:00' hora_inicio, '24:00:00' hora_fin)
  7. SELECT  *
  8. FROM    MiTabla T
  9. INNER JOIN Horas H
  10.         ON T.hora_fin>=H.hora_inicio
  11.         AND T.hora_inicio<=H.hora_fin;
En el CTE Horas deben aparecer todos los rangos de horas.
Toma en cuenta que te vas a obtener muchas duplicaciones de actividades que empezaron en un rango de horas y terminaron en el otro.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
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 09:48.