Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle sql để đếm các trường hợp của các giá trị khác nhau trong một cột

Nếu bạn đang sử dụng Oracle 11g, thì bạn có thể sử dụng PIVOT chức năng:

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;

Xem SQL Fiddle với Demo

Nếu bạn không sử dụng Oracle11g, thì bạn có thể sử dụng một hàm tổng hợp với CASE tuyên bố:

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

Xem SQL Fiddle với Demo



  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 Instant Client dành cho thiết bị Debian dựa trên ARM

  2. Hàm ADD_MONTHS () trong Oracle

  3. Tham số ràng buộc với SQL động Oracle

  4. Tính tuổi từ ngày sinh với trình kích hoạt oracle plsql và chèn tuổi vào bảng

  5. Các khóa ngoại có thực sự cần thiết trong thiết kế cơ sở dữ liệu không?