Могу ли я сделать это в функции 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
Есть ли способ сделать это без курсора или даже курсора, вложенного в курсор (где я сейчас нахожусь!)? Мы здесь не говорим об огромных наборах данных, и производительность не является действительно проблемой (это отчет, а не производственная система), но мне действительно не нравятся курсоры, если я могу их избежать.
Спасибо
Эдвард