Có, hãy xây dựng một biểu thức trả về tổng thứ tự chỉ cho adhoc và 0 cho các hàm khác, và một biểu thức khác thực hiện ngược lại và tính tổng các biểu thức đó. Điều này sẽ bao gồm một hàng cho mỗi vị trí với hai cột một cho adhoc và một cho Hợp đồng ...
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
nếu bạn thực sự muốn các hàng riêng biệt cho từng hàng, thì một cách tiếp cận sẽ là:
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