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

Horas Laboradas con SQl Server 2005

Estas en el tema de Horas Laboradas con SQl Server 2005 en el foro de SQL Server en Foros del Web. Tengo un Problema para calcular las horas laboradas en Sql Server tengo una tabal con el ID del empleado el nombre del empleado y la ...
  #1 (permalink)  
Antiguo 08/04/2013, 09:58
Avatar de johned32  
Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Horas Laboradas con SQl Server 2005

Tengo un Problema para calcular las horas laboradas en Sql Server tengo una tabal con el ID del empleado el nombre del empleado y la hora de entrda y salida pero en registros aparte y necesito calcular las horas laboradas de cada empleado la tabla esta de la siguiente manera el usuariom puede tnere mas de un registro de entrada y de salida puesyto que puede salir a almorzar y tambien hace el registro.

ID Nombre Empelado Fecha Entrada Salida
22122005 CHAUR 04/06/2013 NULL 13:17:23
22122005 CHAUR 04/06/2013 06:20:21 NULL
42910017 ESCOBAR 04/06/2013 06:27:15 NULL
43114011 CACERES 04/06/2013 06:31:12 NULL
52999015 JARAMILLO 04/06/2013 06:08:03 NULL
52999015 JARAMILLO 04/06/2013 NULL 06:48:17
52999015 JARAMILLO 04/06/2013 06:52:51 NULL
63126005 BARRERA 04/06/2013 06:14:57 NULL
92109002 SUAREZ 04/06/2013 06:25:34 NULL
92109002 SUAREZ 04/06/2013 NULL 13:17:15
92129008 RODRIGUEZ 04/06/2013 06:12:28 NULL
92129008 RODRIGUEZ 04/06/2013 NULL 13:17:20
93119011 VEGA 04/06/2013 06:09:14 NULL

Ayuda Por Favor Gracias
  #2 (permalink)  
Antiguo 08/04/2013, 10:54
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
Respuesta: Horas Laboradas con SQl Server 2005

Saca un SELECT con todas las ENTRADAS y otro con todas las SALIDAS, haces un join por empleado y calculas con DATEDIFF las hoaras
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 08/04/2013, 11:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Horas Laboradas con SQl Server 2005

lo mismo que pense yo :P

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. nombre VARCHAR(20),
  5. fecha DATE,
  6. entrada TIME,
  7. salida TIME
  8. )
  9.  
  10. INSERT INTO #temp VALUES (22122005,'CHAUR','04/06/2013',NULL,'13:17:23')
  11. INSERT INTO #temp VALUES (22122005,'CHAUR','04/06/2013', '06:20:21', NULL)
  12. INSERT INTO #temp VALUES (42910017,'ESCOBAR','04/06/2013', '06:27:15', NULL)
  13. INSERT INTO #temp VALUES (43114011,'CACERES','04/06/2013','06:31:12', NULL)
  14. INSERT INTO #temp VALUES (52999015,'JARAMILLO','04/06/2013', '06:08:03', NULL)
  15. INSERT INTO #temp VALUES (52999015,'JARAMILLO','04/06/2013', NULL ,'06:48:17')
  16. INSERT INTO #temp VALUES (52999015,'JARAMILLO','04/06/2013', '06:52:51', NULL)
  17. INSERT INTO #temp VALUES (63126005,'BARRERA','04/06/2013', '06:14:57', NULL)
  18. INSERT INTO #temp VALUES (92109002,'SUAREZ','04/06/2013', '06:25:34', NULL)
  19. INSERT INTO #temp VALUES (92109002,'SUAREZ','04/06/2013', NULL, '13:17:15')
  20. INSERT INTO #temp VALUES (92129008,'RODRIGUEZ','04/06/2013', '06:12:28',NULL)
  21. INSERT INTO #temp VALUES (92129008,'RODRIGUEZ','04/06/2013', NULL,'13:17:20')
  22. INSERT INTO #temp VALUES (93119011,'VEGA','04/06/2013', '06:09:14',NULL)
  23.  
  24.  
  25.  
  26. SELECT SUM(horas) horas ,SUM(minutos) minutos ,id INTO #temp2 FROM(
  27. SELECT id,DATEDIFF(hh,entrada,salida) horas,datediff(mi,entrada,salida) minutos,entrada,salida FROM(
  28. SELECT t1.id,
  29. CASE WHEN t1.entrada IS NULL THEN t2.entrada ELSE t1.entrada END AS entrada,
  30. CASE WHEN t1.salida IS NULL THEN t2.salida ELSE t1.salida END AS salida
  31. --t1.entrada,t1.salida,t2.entrada,t2.salida
  32. FROM #temp AS t1
  33. LEFT JOIN #temp AS t2 ON (t1.id=t2.id)
  34. ) AS t3 WHERE (entrada IS NOT NULL OR salida IS NOT NULL)
  35. GROUP BY id,entrada,salida
  36. ) t4 GROUP BY id
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: horas, registro, server, sql, 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 19:03.