आप इसे इस तरह सहसंबद्ध उपश्रेणियों का उपयोग करके कर सकते हैं:
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