Czy mogę to zrobić w funkcji SQL bez kursora?

Pracuję nad bazą danych grafiku. W prostych słowach tabela TimesheetEries zawiera cztery kolumny

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

Poproszono mnie o napisanie raportu, aby pokazać frekwencję personelu według zakresu dat. Użytkownik umieszcza datę, a raport przedstawia czasy wejścia i wyjścia wszystkich członków personelu wraz z czasem ich trwania na miejscu.

Jednak jest to trudne zadanie, ponieważ pracownicy czasami wychodzą z witryny na krótki okres, a raport musi zignorować te informacje (gdy opuszczają witrynę na mniej niż 2 godziny).

Załóżmy więc następujące wpisy

ID  StaffID  ClockedIn    ClockedOut
1   4        0900         1200
2   4        1330         1730
3   5        0900         1200
4   5        1409         1730
5   4        1830         1930

Wyniki raportuPOWINIEN być

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

Czy jest jakiś sposób na zrobienie tego bez kursora lub nawet kursora zagnieżdżonego wewnątrz kursora (gdzie właśnie jestem teraz!)? Nie mówimy tu o ogromnych zestawach danych, a wydajność nie jest tak naprawdę problemem (jest to raport, a nie system produkcyjny), ale naprawdę nie lubię kursorów, jeśli mogę ich uniknąć.

Dzięki

Edward

questionAnswers(5)

yourAnswerToTheQuestion