Die Where-Klausel WHERE (sales.transDate BETWEEN @fromDate AND @toDate)
entfernt alle Wochen ohne Verkäufe. Wahrscheinlich müssen Sie eine Unterabfrage durchführen, um die Transaktionen abzurufen, und diese dann mit Ihrer Wochentabelle verknüpfen.
SELECT Weeks.WeekNum, SUM(sales.quantity) AS sales
FROM Weeks LEFT OUTER JOIN
(
SELECT *
FROM sales
WHERE (sales.transDate BETWEEN @fromDate AND @toDate)
) sales
ON Weeks.WeekNum = DATEPART(week, sales.transDate)
GROUP BY Weeks.WeekNum