Могу ли я сделать это в функции SQL без курсора?

Я работаю над базой данных расписаний. Проще говоря, таблица TimesheetEntries имеет четыре столбца

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

Меня попросили написать отчет, чтобы показать посещаемость персонала по диапазону дат. Пользователь вводит дату, а в отчете выводится время включения и выключения всех присутствующих сотрудников, а также их продолжительность на месте.

Тем не менее, и именно здесь это становится непростым делом, сотрудники иногда вынуждены покидать сайт на короткие промежутки времени, и отчет должен игнорировать их (когда они покидают сайт менее чем за 2 часа).

Итак, давайте предположим, что следующие записи

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

Выходные данные отчетаSHOULD быть

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

Есть ли способ сделать это без курсора или даже курсора, вложенного в курсор (где я сейчас нахожусь!)? Мы здесь не говорим об огромных наборах данных, и производительность не является действительно проблемой (это отчет, а не производственная система), но мне действительно не нравятся курсоры, если я могу их избежать.

Спасибо

Эдвард

Ответы на вопрос(5)

Ваш ответ на вопрос