Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल ग्रुप बाय क्लॉज में खाली समूहों को कैसे वापस करें

हां, एक अभिव्यक्ति का निर्माण करें जो केवल एडहॉक के लिए ऑर्डरटोटल लौटाता है, और अन्य के लिए 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आल्टर स्टेटमेंट का उपयोग करके SQL सर्वर में तालिका को कैसे बदलें - SQL सर्वर / T-SQL ट्यूटोरियल भाग 35

  2. Windows Azure से दूरस्थ SQL Server 2008 से कनेक्ट करना

  3. .NET:XML दस्तावेज़ को SQL सर्वर में कैसे सम्मिलित करें?

  4. SQL सर्वर तालिका में परिवर्तनों की जाँच करें?

  5. एसक्यूएल क्वेरी; क्षैतिज से लंबवत