Sì, costruisci un'espressione che restituisca ordertotal solo per adhoc, e 0 per gli altri, e un'altra che faccia il contrario, e somma queste espressioni. Ciò includerà una riga per posizione con due colonne una per adhoc e una per Contrattato...
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
se vuoi davvero righe separate per ciascuna, un approccio sarebbe:
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