Ya, buat ekspresi yang mengembalikan total pesanan untuk adhoc saja, dan 0 untuk yang lain, dan satu lagi yang melakukan kebalikannya, dan jumlahkan ekspresi tersebut. Ini akan mencakup satu baris per lokasi dengan dua kolom satu untuk adhoc dan satu untuk Kontrak...
SELECT Location,
Sum(Case When Contract_ID Is Null Then OrderTotal Else 0 End) AdHoc,
Sum(Case When Contract_ID Is Null Then 0 Else OrderTotal End) Contracted
FROM Orders
GROUP BY Location
jika Anda benar-benar ingin baris terpisah untuk masing-masing, maka satu pendekatan adalah:
SELECT Location, Min('AdHoc') ContractStatus,
Sum(Case When Contract_ID Is Null
Then OrderTotal Else 0 End) OrderTotal
FROM Orders
GROUP BY Location
Union
SELECT Location, Min('Contracted') ContractStatus,
Sum(Case When Contract_ID Is Null
Then 0 Else OrderTotal End) OrderTotal
FROM Orders
GROUP BY Location
Order By Location