Ja, konstruera ett uttryck som returnerar ordertotal endast för adhoc, och 0 för de andra, och ett annat som gör det motsatta, och summera dessa uttryck. Detta kommer att inkludera en rad per plats med två kolumner en för adhoc och en för Contracted...
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
om du verkligen vill ha separata rader för var och en, skulle ett tillvägagångssätt vara att:
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