Měli byste to udělat pomocí operátoru 'pivot'. Něco takového (ačkoli jsem si jistý, že jsem zamlčel některé pravopisné nebo syntaktické podrobnosti...):
select catTitle, [1] as site1, [2] as site2, [3] as site3, [4] as site4, [5] as site5
from (select category.catTitle, equipment.quantity, site.title
from equipment
inner join site
on (equipment.siteid = site.siteid)
inner join category
on (category.catid = equipment.catid)
)
pivot
(
sum (quantity)
for equipment.siteid in ( [1], [2], [3], [4], [5] )
) as pvt
order by pvt.category;
Problém je v tom, že potřebujete znát přesnou sadu ID stránek, které chcete zahrnout do dotazu. Pokud potřebujete dynamičtější křížovou tabulku (jako můžete získat v aplikaci Excel), musíte vygenerovat text dotazu jako řetězec a ke spuštění jej použít sp_executesql. Do vygenerovaného textu zahrnete tolik „[1], [2], [3], [4], [5]...“ a „[1] jako web1, [2] jako web2.. .“ věci, jak potřebujete.