sql >> Database >  >> RDS >> Oracle

haal resultaat uit de query

U kunt SUM/CASE . gebruiken of (SUM/DECODE als je wilt)

Select
   COUNT(*) TOTAL_RECORDS  ,
   SUM(case when status = 'PENDING' then 1 else 0 END) TOTAL_PENDING, 
   SUM(case when status = 'NOT_REQUIRED' then 1 else 0 END) TOTAL_NOT_REQUIRED, 
   SUM(case when status = 'ERROR' then 1 else 0 END) TOTAL_ERROR


FROM temp25

Zie hoe het hier werkt

Je kunt ook pivot gebruiken, maar het aantal (*) krijgen is een beetje lelijk

WITH 
COUNTS AS(
select * 
from (
   select status
   from TEMP25 t
)
pivot 
(
   count(status)
   for status in ('PENDING' AS TOTAL_PENDING,
                  'NOT_REQUIRED' AS TOTAL_NOT_REQUIRED,
                  'ERROR' AS TOTAL_ERROR)
))


SELECT COUNT(*) total_records, 
       total_pending, 
       total_not_required, 
       total_error 
FROM   temp25, 
       counts 
GROUP  BY total_pending, 
          total_not_required, 
          total_error 

Pivot-versie



  1. Is InnoDB (MySQL 5.5.8) de juiste keuze voor rijen van meerdere miljarden?

  2. java.sql.SQLException:ongeldige argumenten in aanroep

  3. Splits door komma's gescheiden waarden naar kolommen in Oracle

  4. Hoe meerdere vergelijkbare databases te doorzoeken met Peewee?