Ja, construeer een uitdrukking die het ordertotaal alleen voor adhoc retourneert, en 0 voor de anderen, en een andere die het tegenovergestelde doet, en som die uitdrukkingen op. Dit omvat één rij per locatie met twee kolommen, één voor adhoc en één voor 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
als je echt aparte rijen voor elk wilt, dan zou een benadering zijn om:
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