Ano, zkonstruujte výraz, který vrací ordertotal pouze pro adhoc a 0 pro ostatní, a další, který dělá opak, a sečtěte tyto výrazy. To bude zahrnovat jeden řádek na umístění se dvěma sloupci, jedním pro adhoc a jedním pro Smluvní...
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
pokud opravdu chcete samostatné řádky pro každý, pak jeden přístup by byl:
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