Posso fazer isso na função SQL sem um cursor?

Eu estou trabalhando em um banco de dados de quadro de horários. Em termos simples, a tabela TimesheetEntries tem quatro colunas

ID int (identity, 1, 1)
StaffID int
ClockedIn datetime
ClockedOut datetime

Fui convidado a escrever um relatório para mostrar a frequência da equipe por período. O usuário coloca uma data, e o relatório mostra os tempos de entrada e saída de todos os membros da equipe, juntamente com sua duração no local.

No entanto, e é aí que fica complicado, os membros da equipe às vezes deixam o site por curtos períodos, e o relatório é obrigado a ignorá-los (quando eles deixam o site por menos de duas horas).

Então, vamos supor as seguintes 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

A saída do relatórioDEVEMOS estar

StaffID  ClockedIn    ClockedOut
4        0900         1930
5        0900         1200     
5        1409         1730  

Existe alguma maneira de fazer isso sem um cursor ou até mesmo um cursor aninhado dentro de um cursor (que é onde eu estou agora!)? Não estamos falando de grandes conjuntos de dados aqui e o desempenho não é realmente um problema (é um relatório, não um sistema de produção), mas eu realmente não gosto de cursores se puder evitá-los.

obrigado

Edward

questionAnswers(5)

yourAnswerToTheQuestion