sql >> Database >  >> RDS >> Oracle

Oracle sql om instanties van verschillende waarden in één kolom te tellen

Als u Oracle 11g gebruikt, kunt u de PIVOT . gebruiken functie:

select *
from
(
  select tkey, status, 
    status as col
  from tableB b
  left join tableA a
    on a.fkey = b.fkey
) src
pivot
(
  count(status)
  for col in ('20' as Count_Status20, 
              '30' as Count_Status30,
              '40' as Count_Status40)
) piv;

Zie SQL Fiddle met demo

Als u Oracle11g niet gebruikt, kunt u een aggregatiefunctie gebruiken met een CASE verklaring:

select tkey, 
  count(case when status = 20 then 1 else null end) as Count_Status20,
  count(case when status = 30 then 1 else null end) as Count_Status30,
  count(case when status = 40 then 1 else null end) as Count_Status40
from tableB b
left join tableA a
  on b.fkey = a.fkey
group by tkey

Zie SQL Fiddle met demo



  1. Databasebeveiliging in Oracle

  2. Oracle 11g krijgt alle overeenkomende voorvallen door een reguliere expressie

  3. Hoe kan ik alle kolommen in een tabel doorzoeken?

  4. Probeer deze praktische tips voor het monitoren van MySQL-databases