Вот как вы могли бы принять предложение Никса и реализовать его:
--This just replicates your load to a staging table
declare @t table (Col1 int,StartDate date,EndDate date,Col4 money)
insert into @t
values
(1234,'10/7/2018','10/28/2018',1.000)
--This will be your insert into final
select Col1,EndDate as [Date],Col4
from @t
union all
select t.Col1,a.Date,t.col4
from @t t
cross apply (select *
from dDate
where [Date] >= t.StartDate --This includes start date
and [Date] < t.EndDate --This does not include ED, I did this to avoid result not ending on same day of the week
and [WeekDay] = datepart(dw,t.StartDate) --Weekly records starting on SD and progressing weekly
)a
order by 1,2 -- Just for your viewing pleasure
Результаты:
Col1 Date Col4
1234 2018-10-07 1.00
1234 2018-10-14 1.00
1234 2018-10-21 1.00
1234 2018-10-28 1.00
Предполагается, что у вас есть DateDimension или «Таблица календаря» с полями Date (представляющаякалендарная дата) и день недели (представляет числовое значение дня недели).