Я пытаюсь повернуть или повторить sfhitId (1,2) между диапазоном дат для каждого сотрудника.
Все работает нормально, но я не знаю, как перестать получать повторяющиеся даты, значит почему Я получаю дублированные даты, и как мне от них избавиться ...
Может ли кто-нибудь мне с этим помочь?
Мое единственное требование - если у любого сотрудника 1 или более смены, тогда shiftId должен повторяться в указанном диапазоне дат для каждого сотрудника.
DECLARE @TempTable TABLE (EmployeeId int, ShiftId int)
INSERT INTO @TempTable
SELECT 1 , 1
UNION ALL
SELECT 1, 3
UNION ALL
SELECT 2, 3
DECLARE @StartDate datetime = '2020-03-05',
@EndDate datetime = '2020-03-09';
WITH theDates AS
(
SELECT @StartDate AS theDate
UNION ALL
SELECT DATEADD(DAY, 1, theDate)
FROM theDates
WHERE DATEADD(DAY, 1, theDate) <= @EndDate
)
SELECT theDate, EmployeeID, SHiftId
FROM theDates
CROSS APPLY @TempTable
ORDER BY EmployeeId, theDate
OPTION (MAXRECURSION 0);
введите описание изображения здесь
и мне нужен такой результат ...
theDate EmployeeID SHiftId
2020-03-05 1 1
2020-03-06 1 3
2020-03-07 1 1
2020-03-08 1 3
2020-03-09 1 1
2020-03-05 2 3
2020-03-06 2 3
2020-03-07 2 3
2020-03-08 2 3
2020-03-09 2 3