Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle sql за преброяване на екземпляри от различни стойности в една колона

Ако използвате Oracle 11g, тогава можете да използвате PIVOT функция:

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;

Вижте SQL Fiddle с демонстрация

Ако не използвате Oracle11g, тогава можете да използвате агрегатна функция с CASE изявление:

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

Вижте SQL Fiddle с демонстрация



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверя дали курсорът връща записи в oracle?

  2. Как да архивирате RAC VM

  3. изберете ТОП N реда от таблица

  4. ORA-01264 във физическа готовност

  5. UTL_FILE.FOPEN() процедурата не приема пътя за директория?