Możesz również wykonać oś obrotu w ten sposób:
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
Nie powinieneś wykonywać osobnego podzapytania dla każdej wartości.
pivot
oświadczenie jest również bardzo rozsądną alternatywą. Zwykle trzymam się wersji jawnej (powyżej), ponieważ daje mi ona większą elastyczność w dodawaniu kolumn.