query para totalizar horas

08/04/2004 - 01:01 por Jorge Gómez Díaz | Informe spam
Que tal a todos,

Que me sugieren para lo siguiente, tengo una tabla donde se guardan los
registros de acceso de personal, mi tabla tiene la siguiente estructura.

CREATE TABLE [Registros] (
[IdEmpleado] [smallint] NOT NULL ,
[Fecha] [datetime] NOT NULL ,
[Registro1] [datetime] NULL ,
[Registro2] [datetime] NULL ,
[Registro3] [datetime] NULL ,
[Registro4] [datetime] NULL ,
[Reloj] [varchar] (20) COLLATE Traditional_Spanish_CI_AS NULL ,
CONSTRAINT [PkRegistros] PRIMARY KEY CLUSTERED
(
[IdEmpleado],
[Fecha]
) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO

en la tabla se almacenan 4 registros de acceso por cada IdEmpleado por
dia, los registros son:
Registro1 = hora de entrada del empleado
Registro2 = hora de salida a comer
Registro3 = hora de entrada de comer
Registro4 = hora de salida del dia

Lo que necesito es un query en el cual pueda conocer el número de horas que
trabaja por dia, con esto y por medio del la fecha del registro y la función
DATENAME sacar las horas laboradas por semana y mes.

Alguna referencia al respecto se las agradeceré.

Saludos !

Jorge Gómez Díaz
Uruapan, Mich. México
 

Leer las respuestas

#1 Maximiliano Damian Accotto
08/04/2004 - 02:40 | Informe spam
Hola, bueno las horas por dia me imagino que son igual a las horas de
salida - la de inicio, todo esto menos la de comida verdad?

bueno yo en tu caso usaria la funcion Datediff, en los manuales esta como se
usa pero la idea es algo asi como:

=0

Select idempleado,fecha, datediff(hh,registro1,registro4) -
datediff(hh,registro2,registro3) as horas_x_dia from registros


Ahora si lo queres agrupar por semana podrias hacer algo asi como

Select idempleado,datepart(wk,fecha), sum(datediff(hh,registro1,registro4) -
datediff(hh,registro2,registro3) )as horas_x_dia from registros group by
idempleado



Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Jorge Gómez Díaz" escribió en el mensaje
news:
Que tal a todos,

Que me sugieren para lo siguiente, tengo una tabla donde se guardan los
registros de acceso de personal, mi tabla tiene la siguiente estructura.

CREATE TABLE [Registros] (
[IdEmpleado] [smallint] NOT NULL ,
[Fecha] [datetime] NOT NULL ,
[Registro1] [datetime] NULL ,
[Registro2] [datetime] NULL ,
[Registro3] [datetime] NULL ,
[Registro4] [datetime] NULL ,
[Reloj] [varchar] (20) COLLATE Traditional_Spanish_CI_AS NULL ,
CONSTRAINT [PkRegistros] PRIMARY KEY CLUSTERED
(
[IdEmpleado],
[Fecha]
) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO

en la tabla se almacenan 4 registros de acceso por cada IdEmpleado por
dia, los registros son:
Registro1 = hora de entrada del empleado
Registro2 = hora de salida a comer
Registro3 = hora de entrada de comer
Registro4 = hora de salida del dia

Lo que necesito es un query en el cual pueda conocer el número de horas


que
trabaja por dia, con esto y por medio del la fecha del registro y la


función
DATENAME sacar las horas laboradas por semana y mes.

Alguna referencia al respecto se las agradeceré.

Saludos !

Jorge Gómez Díaz
Uruapan, Mich. México




Preguntas similares