Bạn có thể sử dụng CTE đệ quy để tạo danh sách ngày:
;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
Xem SQL Fiddle với Demo.
Sau đó, bạn có thể tham gia phần này vào bảng của mình, để trả lại các chi tiết bổ sung.