add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table Appointment(Start date)

insert into Appointment values('2010-01-01')
1 rows affected
with cte as
( Select 1 as Header
,Start
,dateadd(day, 30, Start) as AdditionalDate
,30 as AdditionalDays
from Appointment
union all
select Header+1
,Start
,dateadd(day, 30, AdditionalDate)
,AdditionalDays + 30
from cte
where Header <= 2
)
Select * from cte
Header Start AdditionalDate AdditionalDays
1 2010-01-01 2010-01-31 30
2 2010-01-01 2010-03-02 60
3 2010-01-01 2010-04-01 90
with cte as
( Select 1 as Header
,Start
,dateadd(month, 1, Start) as AdditionalDate
,datediff(day, Start, dateadd(month, 1, Start)) as AdditionalDays
from Appointment
union all
select Header+1
,Start
,dateadd(month, 1, AdditionalDate)
,datediff(day, Start, dateadd(month, 1, AdditionalDate))
from cte
where Header <= 2
)
Select * from cte
Header Start AdditionalDate AdditionalDays
1 2010-01-01 2010-02-01 31
2 2010-01-01 2010-03-01 59
3 2010-01-01 2010-04-01 90