sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL Query til at opsummere statistik ved hjælp af 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;

Dette kaldes ofte en "pivot"-forespørgsel, og jeg har skrevet en artikel om, hvordan man genererer disse forespørgsler dynamisk på min blog .

Version, der bruger DECODE (Oracle-specifik, men mindre udførlig):

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;


  1. Optimer INSERT / UPDATE / DELETE operationen

  2. Fatal fejl:Kald til udefineret funktion sqlsrv_connect() i C:\xampp\htdocs

  3. på dublet nøgleopdatering med en betingelse?

  4. Hvorfor returnerer Oracles to_timestamp_tz den forkerte tid og/eller tidszone?