¿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

Respuestas a la pregunta(5)

Su respuesta a la pregunta