Je kunt het draaien ook als volgt doen:
select workweek,
sum(case when Catg = 'Cat1' then cost end) as Cat1TotalCost,
sum(case when Catg = 'Cat2' then cost end) as Cat2TotalCost,
sum(case when Catg = 'Cat3' then cost end) as Cat3TotalCost
from DataTable
group by Workweek
Je zou niet voor elke waarde een aparte subquery moeten doen.
De pivot
verklaring is ook een zeer redelijk alternatief. Ik heb de neiging om bij de expliciete versie (hierboven) te blijven, omdat het me meer flexibiliteit geeft bij het toevoegen van kolommen.