Ако мислите от гледна точка на зацикляне, вървите по грешен път. Трябва да мислите от гледна точка на логиката, базирана на множество. Това, което трябва да направите, е да се отървете изцяло от променливата @weeknumber и просто да групирате данните си по различен начин. Искате да групирате по седмици, така че трябва да изчислите номера на седмицата. Можете да направите това, като използвате DATEDIFF() и 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