Разделить диапазон дат на дневные строки в sql - PullRequest
0 голосов
/ 20 марта 2019

У меня есть таблица с 3 столбцами

enter image description here

Я хочу разделить каждый день на основе Promo_Period_Start и Promo_Period_End

Я попробовал следующее

declare @d datetime;
set @d = getdate();

select *
from   [dbo].[T]
where  @d between Promo_Period_Start and Promo_Period_End

ОБРАЗЦЫ ДАННЫХ

enter image description here

1 Ответ

0 голосов
/ 20 марта 2019

Использовать рекурсивный CTE

;WITH cte AS (
    SELECT ID, Promo_Period_Start,Promo_Period_End
    FROM T
    UNION ALL
    SELECT ID, DATEADD(day, 1, Promo_Period_Start), Promo_Period_End
    FROM cte
    WHERE Promo_Period_Start < Promo_Period_End
)
SELECT * FROM cte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...