¿Puedo hacer esto en la función SQL sin un cursor?
Estoy trabajando en una base de datos de horas. En términos simples, la tabla TimesheetEntries tiene cuatro columnas
ID int (identity, 1, 1)
StaffID int
ClockedIn datetime
ClockedOut datetime
Me han pedido que escriba un informe para mostrar la asistencia del personal por rango de fechas. El usuario ingresa una fecha y el informe muestra los horarios de entrada y salida de todos los miembros del personal que asisten, junto con su duración en el sitio.
Sin embargo, y aquí es donde se complica, los miembros del personal a veces se despiden para abandonar el sitio por períodos cortos, y el informe debe ignorarlos (cuando salen del sitio por menos de 2 horas).
Entonces, asumamos las siguientes entradas
ID StaffID ClockedIn ClockedOut
1 4 0900 1200
2 4 1330 1730
3 5 0900 1200
4 5 1409 1730
5 4 1830 1930
La salida del informe.DEBERÍA ser
StaffID ClockedIn ClockedOut
4 0900 1930
5 0900 1200
5 1409 1730
¿Hay alguna forma de hacer esto sin un cursor o incluso un cursor anidado dentro de un cursor (que es donde estoy ahora?)? No estamos hablando de grandes conjuntos de datos aquí y el rendimiento no es realmente un problema (es un informe, no un sistema de producción), pero realmente no me gustan los cursores si puedo evitarlos.
Gracias
Eduardo