• Here's another way:

    ;WITH Preaggregate AS (

    SELECT Grp, [Result] = SUM(numLow) + SUM(numMedium) + SUM(numHigh) + SUM(numZeroScore)

    FROM historyTable h

    CROSS APPLY (

    SELECT [Grp] = CASE

    WHEN h.asAtDate > DATEADD(DAY,-7,CAST(GETDATE() AS DATE)) THEN 'thisWeek'

    WHEN h.asAtDate > DATEADD(DAY,-14,CAST(GETDATE() AS DATE)) THEN 'lastweek'

    --WHEN h.asAtDate > DATEADD(DAY,-21,CAST(GETDATE() AS DATE)) THEN 'weekbeforelast'

    ELSE NULL END

    ) x

    --WHERE h.asAtDate > DATEADD(DAY,-21,CAST(GETDATE() AS DATE))

    WHERE h.asAtDate > DATEADD(DAY,-14,CAST(GETDATE() AS DATE))

    GROUP BY Grp

    )

    SELECT

    [thisWeek] = CASE WHEN Grp = 'thisWeek' THEN Result ELSE 0 END,

    [lastweek] = CASE WHEN Grp = 'lastweek' THEN Result ELSE 0 END,

    [weekbeforelast] = CASE WHEN Grp = 'weekbeforelast' THEN Result ELSE 0 END

    FROM Preaggregate

    “Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

    For fast, accurate and documented assistance in answering your questions, please read this article.
    Understanding and using APPLY, (I) and (II) Paul White
    Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden