SQL重复日期列表,包括开始日期,天数,休息日和频率



希望根据以下数据填充表 (SQL Server 2016(:开始日期(日期时间(、天数(整数(、休息日(整数(、重复间隔频率(整数(

数据 - 2018 年 1 月 1 日,开 = 7,关 = 5,频率 = 10

输出:

日期 1/1/2018 1/2/2018 1/3/2018 1/4/2018 1/5/2018 1/6/2018 1/7/2018 **跳过 5** 1/13/2018 1/14/2018 1/15/2018 1/16/2018 1/17/2018 1/18/2018 1/19/2018 **跳过 5** 等。创建 7 并跳过 5 x 10

意识到这可以使用循环来完成,我希望有一个方便的 CTE 示例或其他选项。

您可以使用如下所示的查询。此解决方案基于计数/数字表方法。 要了解更多信息,请阅读杰夫·莫登的文章

观看现场演示

declare @sd date= '01/01/2018', @on int= 7, @off int= 5, @freq int= 10;
select d
from
(
select 
top (@freq* (@on+@off))
d=dateadd(d,row_number() over( order by (select null))-1 ,@sd),
flag=case when row_number() over( order by (select null))%(@on+@off) between 1 and @on then 1 else 0 end
from sys.objects o1
cross join sys.objects o2
)t
where flag=1

最新更新