Ja, konstruieren Sie einen Ausdruck, der die Bestellsumme nur für Ad-hoc und 0 für die anderen zurückgibt, und einen weiteren, der das Gegenteil bewirkt, und summieren Sie diese Ausdrücke. Dies umfasst eine Zeile pro Standort mit zwei Spalten, eine für Ad-hoc und eine für Vertraglich...
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
Wenn Sie wirklich getrennte Zeilen für jeden haben möchten, dann wäre ein Ansatz:
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