declare @t table
(
StartDate date,
EndDate date,
DaysToAdd int
);
insert into @t(StartDate, EndDate, DaysToAdd)
values('20210217', '20210227', 10),
('20210312', '20210310', 10), ('20210326', '20210401', 10), ('20210409', '20210401', 10),
('20210507', '20210401', 10), ('20210606', '20210529', 10),
('20210618', '20210417', 3), ('20210620', '20210309', 2),
('20300913', '20210227', 2), (null, '20300914', 4);
select *
from @t
select
dateadd(day, -DaysToAdd-1+count(*) over(order by isnull(StartDate, EndDate), EndDate) + sum(DaysToAdd) over(order by isnull(StartDate, EndDate), EndDate), min(StartDate) over()) as NewStartDate,
dateadd(day, -1+count(*) over(order by isnull(StartDate, EndDate), EndDate) + sum(DaysToAdd) over(order by isnull(StartDate, EndDate), EndDate), min(StartDate) over()) as NewEndDate,
*
from @t;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…