У меня есть приложение, которое управляет расписаниями сотрудников.
Мои таблицы выглядят так:
TIMESHEET
TIMESHEET_ID
EMPLOYEE_ID
etc
TIMESHEET_DAY:
TIMESHEETDAY_ID
TIMESHEET_ID
DATE_WORKED
HOURS_WORKED
Каждый период охватывает 14-дневный период, поэтому для каждой записи TIMESHEET имеется 14 записей TIMESHEET_DAY. И если кто-то уходит в отпуск, ему не нужно вводить расписание, если в течение этого 14-дневного периода не было рабочих часов.
Теперь мне нужно определить, есть ли у работников разрыв в 7 дней в предыдущие 6 месяцев. Это означает, что мне нужно искать либо 7 последовательных записей TIMESHEET_DAY с 0 часами, ИЛИ 7-дневный период с комбинацией отсутствия отправленных записей и записей, отправленных за 0 часов. Мне нужно знать DATE_WORKED последней записи TIMESHEET_DAY с часами в этом случае.
Приложение - asp.net, поэтому я мог бы извлечь все записи TIMESHEET_DAY и выполнить их итерацию, но я думаю, что должен быть более эффективный способ сделать это с SQL.