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

एसक्यूएल ग्रुप बाय - सिंगल कॉलम से कई एग्रीगेट कॉलम जेनरेट करें

आप इसे इस तरह सहसंबद्ध उपश्रेणियों का उपयोग करके कर सकते हैं:

SELECT 
  Company, 
  Date, 
  (SELECT COUNT(*) FROM MyTable AS T1 
     WHERE T1.Flag='Y' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_Y,
  (SELECT COUNT(*) FROM MyTable AS T1 
     WHERE T1.Flag='N' AND T1.Company=T2.Company AND T1.Date=T2.Date) AS Count_N
FROM MyTable AS T2
GROUP BY Company, Date

आप इसे अधिक संक्षिप्त रूप से भी कर सकते हैं, लेकिन शायद (यकीनन) SUM का उपयोग करके थोड़ा कम पठनीयता के साथ चाल:

SELECT 
  Company, 
  Date, 
  SUM(CASE WHEN Flag='Y' THEN 1 ELSE 0 END) AS Count_Y,
  SUM(CASE WHEN Flag='N' THEN 1 ELSE 0 END) AS Count_N,
FROM MyTable
GROUP BY Company, Date

Oracle/PLSQL में, DECODE फ़ंक्शन का उपयोग CASE . को बदलने के लिए किया जा सकता है और भी संक्षिप्त के लिए:

SELECT 
  Company, 
  Date, 
  SUM(DECODE(Flag,'Y',1,0)) AS Count_Y,
  SUM(DECODE(Flag,'N',1,0)) AS Count_N,
FROM MyTable
GROUP BY Company, Date


  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 ट्यूटोरियल

  2. SSIS का उपयोग करके CSV फ़ाइल को SharePoint साइट पर अपलोड करें

  3. SQL सर्वर में कर्सर का क्या उपयोग होता है?

  4. SQL सर्वर में SELECT से UPDATE का उपयोग कैसे करें

  5. टी-एसक्यूएल में '01-सितंबर-2017' को '01/09/2017' में कनवर्ट करें?