Anda harus dapat melakukan ini dengan operator 'pivot'. Sesuatu seperti ini (walaupun saya yakin saya meredam beberapa detail ejaan atau sintaks...):
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;
Masalahnya adalah Anda perlu mengetahui set id situs yang tepat yang ingin Anda sertakan dalam kueri. Jika Anda memerlukan tab silang yang lebih dinamis (seperti yang Anda dapatkan di Excel), maka Anda perlu membuat teks kueri sebagai string dan menggunakan sp_executesql untuk menjalankannya. Dalam teks yang dihasilkan, Anda menyertakan sebanyak "[1], [2], [3], [4], [5]..." dan "[1] sebagai site1, [2] sebagai site2.. ." hal-hal yang Anda butuhkan.