Sie können den Pivot auch so durchführen:
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
Sie sollten nicht für jeden Wert eine separate Unterabfrage durchführen.
Der pivot
Aussage ist auch eine sehr vernünftige Alternative. Ich neige dazu, bei der expliziten Version (oben) zu bleiben, weil sie mir mehr Flexibilität beim Hinzufügen von Spalten gibt.