これは、「ピボット」演算子を使用して実行できるはずです。このようなもの (ただし、スペルや構文の詳細を消していると思いますが...):
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;
プレ>これに関する問題は、クエリに含めたいサイト ID の正確なセットを知る必要があることです。より動的なクロス集計 (Excel で取得できるようなもの) が必要な場合は、クエリ テキストを文字列として生成し、sp_executesql を使用して実行する必要があります。生成されたテキストには、「[1]、[2]、[3]、[4]、[5]...」および「[1] をサイト 1 として、[2] をサイト 2 として」をできるだけ多く含めます。 ."必要に応じて。