Om du tänker i termer av looping, går du på fel väg. Du måste tänka i termer av set-baserad logik. Vad du behöver göra är att bli av med variabeln @weeknumber helt och hållet och bara gruppera dina data på ett annat sätt. Du vill gruppera efter veckor, så du måste räkna ut veckonummer. Du kan göra detta genom att använda DATEDIFF() och 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