Eine Kalendertabelle halte ich auch für eine gute Idee, denn dort kannst du auch nachträglich eventuell noch interessante Flags anbinden (Feiertag z.B.)
Das Ganze zu joinen sollte kaum Resourcen fressen.
Zur Berechnung der Kalenderwoche zu einem Datum kannst du die Funktion
DatePart aus T-
SQL nutzen, und dann danach gruppieren.