हां, एक अभिव्यक्ति का निर्माण करें जो केवल एडहॉक के लिए ऑर्डरटोटल लौटाता है, और अन्य के लिए 0, और दूसरा जो विपरीत करता है, और उन अभिव्यक्तियों को जोड़ता है। इसमें प्रति स्थान एक पंक्ति शामिल होगी जिसमें दो कॉलम एडहॉक के लिए और एक अनुबंधित के लिए होगा...
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