Я использую Microsoft SQL Server 2012 и создаю следующую таблицу:
Clinic_code Clinic_name D D_days_passed
------------------------------------------------------
A123 NAME1 2018-12-01 1
A124 NAME2 2018-12-01 1
A125 NAME3 2018-12-01 1
[...]
A123 NAME1 2018-12-02 2
A124 NAME2 2018-12-02 2
A125 NAME3 2018-12-02 2
[...]
A123 NAME1 2018-12-03 3
A124 NAME2 2018-12-03 3
A125 NAME3 2018-12-03 3
Я адаптировал здесь код из @JohnCappelletti, но мне не удается включить столбец 'D_days_passed' который, по сути, считает количество дней с даты начала:
DECLARE @fromdate date = '2018-12-01'
SELECT #MyTable.*, B.D
FROM #MyTable
CROSS APPLY
(SELECT TOP (DATEDIFF(DAY, @fromdate, DATEADD(Month, 9, @fromdate)) + 1)
D = CONVERT(date, DATEADD(DAY, -1 + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), @fromdate))
FROM master..spt_values n1) B
Если у вас есть время,
Вопрос : как можно изменить код вместо включения каждый день с одной даты на другую по клини c, я хотел ввести один и тот же период недели по клини c, например, с субботы по воскресенье:
Clinic_code Clinic_name D_start D_end Weeks_passed
-------------------------------------------------------------------------
A123 NAME1 2018-12-02 2018-12-08 1
A124 NAME2 2018-12-02 2018-12-08 1
A125 NAME3 2018-12-02 2018-12-08 1
[...]
A123 NAME1 2018-12-09 2018-12-15 2
A124 NAME2 2018-12-09 2018-12-15 2
A125 NAME3 2018-12-09 2018-12-15 2
[...]
A123 NAME1 2018-12-16 2018-12-22 3
A124 NAME2 2018-12-16 2018-12-22 3
A125 NAME3 2018-12-16 2018-12-22 3