Sí, construye una expresión que devuelva el ordertotal solo para adhoc, y 0 para los demás, y otra que haga lo contrario, y suma esas expresiones. Esto incluirá una fila por ubicación con dos columnas, una para adhoc y otra para Contratado...
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
si realmente quiere filas separadas para cada una, entonces un enfoque sería:
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