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

Preguntas similare

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




Respuesta Responder a este mensaje
#2 Maximiliano Damian Accotto
08/04/2004 - 02:42 | Informe spam
perdon se me solto el dedo sin terminar :(

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

proba algo asi, ojo que no lo probe aca, puede tener errores de sintaxis o
algo asi, pero la idea es mas o menos esta.

Bye




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




Respuesta Responder a este mensaje
#3 Jorge Gómez Díaz
08/04/2004 - 03:20 | Informe spam
Hola Max, muchas gracias por tu respuesta que de hecho me sirvió, pero ahora
tengo otro detalle, el cual esta en las fracciones de hora, y no le he
encontrado por aquello de que de las fracciones de varios dias las debo de
agregar a las horas, y esto obviamente considerando base 60 (minutos), como
ves ?

Saludos !

"Maximiliano Damian Accotto" escribió
en el mensaje news:#
perdon se me solto el dedo sin terminar :(

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

proba algo asi, ojo que no lo probe aca, puede tener errores de sintaxis o
algo asi, pero la idea es mas o menos esta.

Bye




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
>
>
>
>


Respuesta Responder a este mensaje
#4 Jose Mariano Alvarez \(MUG\)
08/04/2004 - 04:08 | Informe spam
Haz la cuentas en minutos o segundos y al final con el resultado calculado
arma el resultado usando los operadores de modulo y division entera y
redondea a tu gusto y necesidad



Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar

"Jorge Gómez Díaz" wrote in message
news:
Hola Max, muchas gracias por tu respuesta que de hecho me sirvió, pero


ahora
tengo otro detalle, el cual esta en las fracciones de hora, y no le he
encontrado por aquello de que de las fracciones de varios dias las debo de
agregar a las horas, y esto obviamente considerando base 60 (minutos),


como
ves ?

Saludos !

"Maximiliano Damian Accotto" escribió
en el mensaje news:#
> perdon se me solto el dedo sin terminar :(
>
> Select idempleado,datepart(wk,fecha) as semana,
> sum(datediff(hh,registro1,registro4) -
> datediff(hh,registro2,registro3) )as horas_x_dia from registros group by
> idempleado,datepart(wk,fecha)
>
> proba algo asi, ojo que no lo probe aca, puede tener errores de sintaxis


o
> algo asi, pero la idea es mas o menos esta.
>
> Bye
>
>
>
>
> 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
> >
> >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida