はい、アドホックのみの ordertotal を返し、その他の場合は 0 を返す式を作成し、その逆を行う別の式を作成して、それらの式を合計します。これには、場所ごとに 1 つの行が含まれ、アドホック用と契約用の 2 つの列が含まれます...
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
それぞれに別々の行が本当に必要な場合は、次の方法があります:
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