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

como sumar y agrupar horas

Estas en el tema de como sumar y agrupar horas en el foro de SQL Server en Foros del Web. Chicos, estoy algo desesperado tengo una base en sql server 2005, una de mis columnas es HORAS obviamente en formato datetime le hago la siguiente ...
  #1 (permalink)  
Antiguo 26/12/2007, 17:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
como sumar y agrupar horas

Chicos, estoy algo desesperado

tengo una base en sql server 2005, una de mis columnas es HORAS obviamente en formato datetime
le hago la siguiente consulta para que vean:

select (convert(varchar,HORAS,108)) AS SOLO_HS, HORAS
from CAIDAS




lo que quiero ahora es sumar la variable HORAS, pero me da el error de formato...
estoy desesperado please ayudenme

la idea es que cada HORA tiene un Login o ID, entonces tambien lo agrupo por ID y asi saco las horas por cada uno


desde ya gracias!!!
  #2 (permalink)  
Antiguo 26/12/2007, 18:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: como sumar y agrupar horas

¿Ya leiste sobre DATEADD o DATEDIFF, funciones que podrian servir para tu objetivo?
  #3 (permalink)  
Antiguo 26/12/2007, 18:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como sumar y agrupar horas

si probe pero no me agrupa con la DATEADD, y necesito que me sume toda la columna o en partes de acuerdo a lo que agrupe
  #4 (permalink)  
Antiguo 26/12/2007, 19:29
 
Fecha de Ingreso: diciembre-2003
Ubicación: Caracas
Mensajes: 81
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: como sumar y agrupar horas

Dices que cada hora tiene un ID, ese ID es el mismo para cada hora o es diferente?
Para poder agrupar por HORAS, debes tener un campo comun para algunas de las horas, por ejemplo un ID de Usuario, para que puedas agrupar por ee ID y te sumara las horas de ese id.

Por otro lado, si no tienes un campo comun que se repita con la misma informacion para diferentes horas, como lo veo, sera qie hagas una suma del valor de ese campo, por ejemplo SELECT SUM(HORAS) AS Total_Horas.

Quizas si expliques un poco mas que data tiene cada registro y como se genera, te pueda dar m as ayuda
  #5 (permalink)  
Antiguo 26/12/2007, 19:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como sumar y agrupar horas

Edu te comento, la tabla tiene los siguientes campos
ID -> numero de usuario
Fecha -> datetime Fecha del registro
Horas -> tiempo de la caida (datetime)

Lo que necesito es agrupar por ID (porque se repiten varias veces cada uno ejmp: varias veces el usuario 5 por decir un numero) y ese unico registro me devuelva la cantidad de horas que tiene
si yo sumo las horas SUM(HORAS) me rechaza por el formato:

"Operand data type datetime is invalid for sum operator"

BUSQUE MUCHAS FORMAS:

select ((Days + ((hours + ((minutes + (seconds/60)) / 60)) / 24)) / 365) as años,
((Days + ((hours + ((minutes + (seconds/60)) / 60)) / 24)) % 365) as dias,
((hours + ((minutes + (seconds/60)) / 60)) % 24) as horas,
((minutes + (seconds/60)) % 60) as minutos, (seconds % 60) as segundos
from (SELECT SUM(DATEPART(dd,cp.HORAS)) as Days,
SUM(DATEPART(hh,cp.HORAS)) as Hours,
SUM(DATEPART(mi,cp.HORAS)) as Minutes,
SUM(DATEPART(ss,cp.HORAS)) as seconds FROM CAIDAS as cp ) as temps

------------------------------------------------------------------------

SELECT LOGIN, SUM (DATEPART(MINUTE, HORAS )) / 60 + SUM (DATEPART(HOUR, HORAS)) As Horas,
SUM (DATEPART(MINUTE, HORAS)) % 60 As Minutos
FROM CAIDAS
GROUP BY LOGIN


la segunda es la mas cercana pero me devuelve por un campo las horas y por otro los minutos

y necesito todo junto ejmplio: 02:20:50 por decir un total...

espero se entienda
  #6 (permalink)  
Antiguo 26/12/2007, 19:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: como sumar y agrupar horas

POR FIN...
AMO PROBAR Y ERROR
PROBAR Y ERROR
PROBAR Y OK!

HICE ESTO:

SELECT C.LOGIN,
convert(nchar,CONVERT(DATETIME,SUM(C.HS_FLOAT),108 ),108)

FROM

(SELECT LOGIN,CONVERT(FLOAT(8),HORAS) AS HS_FLOAT
FROM CAIDAS) C

GROUP BY LOGIN

EN SINTESIS SUB CONSULTA PARA TRANSFORMAR A FLOAT, LUEGO DOS CONVERSIONES Y GUALA
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:12.