Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL-Abfrage zum Zusammenfassen von Statistiken mit GROUP BY

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;

Dies wird oft als "Pivot"-Abfrage bezeichnet, und ich habe einen Artikel darüber geschrieben, wie man diese Abfragen dynamisch generiert in meinem Blog .

Version mit DECODE (Oracle-spezifisch, aber weniger ausführlich):

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;