Nếu bạn đang suy nghĩ theo kiểu lặp lại, bạn đang đi sai đường. Bạn cần phải suy nghĩ về logic dựa trên tập hợp. Những gì bạn cần làm là loại bỏ hoàn toàn biến @weeknumber và chỉ nhóm dữ liệu của bạn theo cách khác. Bạn muốn nhóm theo tuần, vì vậy bạn cần tính số tuần. Bạn có thể thực hiện việc này bằng cách sử dụng DATEDIFF () và DATEPART (dw, ...):
declare @StartDate date
declare @EndDate date
declare @WeekNumber int
set @StartDate = '01/06/2014'
set @EndDate = '07/06/2015'
--set @WeekNumber = 01
select datediff(ww,@startdate,[WeekStartDate])+1 [WeekNumber]
,[WeekStartDate]
,dateadd(dd,6,[WeekStartDate]) [WeekEndDate]
,*
From (Select t1.LeadSource
,count(t1.prospectid) [Leads]
,sum(t1.Found) [Apps]
,dateadd(dd,2-datepart(dw,t1.CreateDate),t1.CreateDate) WeekStartDate
from Table T1
where t1.CreateDate between @startDate
and @enddate
GROUP BY f.LeadSource ) f