Du kan använda en rekursiv CTE för att generera listan med datum:
;with cte as
(
select @sDate StartDate,
DATEADD(wk, DATEDIFF(wk, 0, @sDate), 6) EndDate
union all
select dateadd(ww, 1, StartDate),
dateadd(ww, 1, EndDate)
from cte
where dateadd(ww, 1, StartDate)<= @eDate
)
select *
from cte
Se SQL Fiddle with Demo.
Sedan kan du lägga till detta till ditt bord för att returnera ytterligare information.