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

Oracle SQL - Xoay các hàng trong bảng thành cột và sử dụng truy vấn phụ trong tổng hợp

Chỉ cần sử dụng kết hợp có điều kiện:

SELECT COALESCE(customer, 'Grand Total') as customer,
       SUM(CASE WHEN Hotel = 'Royal Palms' THEN 1 ELSE 0 END) as "Royal Palms",
       SUM(CASE WHEN Hotel = 'Beverly Hills' THEN 1 ELSE 0 END) as "Beverly Hills",       
       SUM(CASE WHEN Hotel = 'Ritz-Carlton' THEN 1 ELSE 0 END) as "Ritz-Carlton" ,
       COUNT(*) as "Grand Total",
       COUNT(Booked_Status) as "Num Booked"
FROM CUST_HOTEL_VIEW
GROUP BY ROLLUP(CUSTOMER)
ORDER BY CUSTOMER;

Tổng hợp có điều kiện thì linh hoạt hơn nhiều pivot . Cá nhân tôi thấy không có lý do gì cho pivot cú pháp:nó hoạt động tốt một điều, nhưng không phải là một khối xây dựng như cách các câu lệnh SQL truyền thống.

ROLLUP() cũng khá hữu ích. Bạn cũng có thể sử dụng:

GROUP BY GROUPING SETS ( (CUSTOMER), () )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kích hoạt chọn bản ghi con, nhân các giá trị của chúng và cập nhật bản ghi mẹ

  2. Lỗi thời gian chạy:-2147217887 (80040e21) Hệ thống không thể tìm thấy nội dung tin nhắn cho số tin nhắn 0x80040e21 trong tệp tin nhắn cho OraOLEDB

  3. Oracle - Điều gì sẽ xảy ra khi làm mới chế độ xem 'REFRESH FORCE ON DEMAND' với DBMS_MVIEW.REFRESH

  4. Bảng bên ngoài Oracle:Bố cục tệp phẳng nâng cao

  5. Truy vấn trong Excel không có tiêu đề - Oracle