我有如下数据
create table #Temp(Id int, FromDate date, ToDate date)
Insert into #Temp
values(1,'9/1/2019','9/1/2019'),
(2,'9/2/2019','9/3/2019'),
(3,'9/2/2019','9/3/2019'),
(4,'9/4/2019','9/6/2019'),
(5,'9/7/2019','9/7/2019')
我正在尝试计算差异并创建日期,即第 1 天、第 2-3 天等...
预期结果
Id FromDate ToDate Display
1 01/09/2019 01/09/2019 Day 1
2 02/09/2019 03/09/2019 Day 2-3
3 02/09/2019 03/09/2019 Day 2-3
4 04/09/2019 06/09/2019 Day 4-6
5 07/09/2019 07/09/2019 Day 7
我尝试使用 datediff 下面的代码,但不确定如何与前一行关联并获取日期范围
select *, DATEDIFF(DAY,FromDate,ToDate)
from #Temp
最佳答案
使用第一个值
select *
, datediff(day, first_value(FromDate) over(order by FromDate), FromDate) + 1
, datediff(day, first_value(FromDate) over(order by FromDate), ToDate) + 1
from #Temp
关于sql - 根据日期范围计算天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524246/