Corregir Marcacion en asistencia de personal
Publicado por Abraham (4 intervenciones) el 10/09/2018 04:00:29
Buen dia, estoy usando el sql server 2012 y la tabla que tengo es la siguiente:
-- Esta la consulta que muestra el siguiente resultado
SELECT Asistencia.Id_Trabajador AS ID_TRABAJADOR, FechaAsistencia AS FECHA,
row_number() OVER (PARTITION BY Asistencia.Id_Trabajador
ORDER BY (FechaAsistencia)) AS FILA, (CASE WHEN (row_number() OVER (PARTITION BY Asistencia.Id_Trabajador
ORDER BY (FechaAsistencia))) % 2 = '0' THEN 'SALIDA' ELSE 'ENTRADA' END) AS ENTRADA_SALIDA
FROM dbo.Asistencia
GROUP BY FechaAsistencia, Id_Trabajador

Como ven cada numeo impar es entrada e impar es salida, ahora lo que quiero cambiar es que cuando entre una entrada y salida haya una diferencia de 24 horas o mas la salida, sea considerada como entrada y por lo tanto sus demas filas tambien cambiarian, como se ve en la imagen mostrada a continuacion

¿Como podria lograr conseguir este resultado?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create table Asistencia (ID_TRABAJADOR int, FechaAsistencia datetime)
go
insert into Asistencia (ID_TRABAJADOR, FechaAsistencia) values
(3, '20180906 21:55:08.000'),
(3, '20180906 21:55:44.000'),
(3, '20180906 21:56:32.000'),
(3, '20180907 22:21:24.000'),
(13,'20180906 21:55:28.000'),
(13,'20180906 21:56:24.000'),
(13,'20180906 22:00:59.000'),
(13,'20180906 22:05:40.000'),
(13,'20180906 22:19:24.000'),
(13,'20180906 22:21:03.000'),
(13,'20180906 22:21:54.000')
Go
-- Esta la consulta que muestra el siguiente resultado
SELECT Asistencia.Id_Trabajador AS ID_TRABAJADOR, FechaAsistencia AS FECHA,
row_number() OVER (PARTITION BY Asistencia.Id_Trabajador
ORDER BY (FechaAsistencia)) AS FILA, (CASE WHEN (row_number() OVER (PARTITION BY Asistencia.Id_Trabajador
ORDER BY (FechaAsistencia))) % 2 = '0' THEN 'SALIDA' ELSE 'ENTRADA' END) AS ENTRADA_SALIDA
FROM dbo.Asistencia
GROUP BY FechaAsistencia, Id_Trabajador

Como ven cada numeo impar es entrada e impar es salida, ahora lo que quiero cambiar es que cuando entre una entrada y salida haya una diferencia de 24 horas o mas la salida, sea considerada como entrada y por lo tanto sus demas filas tambien cambiarian, como se ve en la imagen mostrada a continuacion

¿Como podria lograr conseguir este resultado?
Valora esta pregunta


0