Tak, skonstruuj wyrażenie, które zwraca sumę porządków tylko dla adhoc, 0 dla pozostałych i inne, które działa odwrotnie, i zsumuj te wyrażenia. Obejmuje to jeden wiersz na lokalizację z dwiema kolumnami, jedną dla adhoc i jedną dla zakontraktowanych...
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
jeśli naprawdę chcesz osobnych wierszy dla każdego, jednym podejściem byłoby:
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