select batch
, count(case when status=1 then 1 end) status1
, count(case when status=2 then 1 end) status2
, count(case when status=3 then 1 end) status3
from table
group by batch;
इसे अक्सर "पिवट" क्वेरी कहा जाता है, और मैंने इन प्रश्नों को गतिशील रूप से उत्पन्न करने के तरीके के बारे में एक लेख लिखा है मेरे ब्लॉग पर ।
DECODE का उपयोग करने वाला संस्करण (Oracle-विशिष्ट लेकिन कम क्रिया):
select batch
, count(decode(status,1,1)) status1
, count(decode(status,2,1)) status2
, count(decode(status,3,1)) status3
from table
group by batch;