Sim, construa uma expressão que retorne o ordertotal apenas para adhoc, e 0 para os demais, e outra que faça o contrário, e some essas expressões. Isso incluirá uma linha por local com duas colunas, uma para adhoc e outra para Contrato...
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 você realmente quiser linhas separadas para cada uma, uma abordagem seria:
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