У нас есть набор данных, содержащий времена сменной активности сотрудников, который выглядит следующим образом: Таблица данных
Набор результатов должен выглядеть следующим образом:
Date - Employee ID - Start Time - End Time - Fixed Start Day
2020-01-02 - 17207 - 00:00 - 07:00 - NULL
2020-01-02 - 17207 - 23:00 - 07:00 - P
Для большинство сотрудников работают только в дневное время, и вы можете просто использовать min (время начала) и max (время окончания) и группировать по дате. Однако для одного проекта сотрудники работают в ночную смену. Вот откуда берутся мои основные вопросы:
1) Если их смена началась в предыдущий день, столбец с фиксированной датой должен показать «P»
2) Когда они закончили смещение на том же самом день, когда они начали новый, становится трудно определить правильное время начала / окончания.
Каков наилучший подход для этого? Я имел это в качестве отправной точки, прежде чем пытаться решить проблему с фиксированной датой, но это явно не годится:
SELECT schedDate,
tvID,
NULL as 'Fixed Start Day',
CONVERT(char(20),MIN(StartTime),108) as 'Fixed Start Time',
CONVERT(char(20),MAX(EndTime),108) as 'Fixed End Time'
FROM agentschedule
WHERE DATEPART(yy,schedDate) = 2020
GROUP BY schedDate
tvID
Я пробовал случай, когда для определения, когда фиксированный начальный день должен быть нулевым, а когда должен быть P, но со временем начала / окончания я не уверен, с чего начать ..
Важное примечание: из-за ограничений компании я не могу использовать создание таблицы ... поэтому конечный результат должен быть запросом выбора ,