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

Oracle SQL - Завъртете редовете на обобщената таблица към колона и използвайте подзаявка в обобщената таблица

Просто използвайте условно агрегиране:

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;

Условното агрегиране е много по-гъвкаво от pivot . Лично аз не виждам причина за pivot синтаксис:прави едно нещо добре, но не е градивен елемент, както са традиционните SQL изрази.

ROLLUP() също е доста полезно. Можете също да използвате:

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. IN клауза за Oracle Prepared Statement в Python cx_Oracle

  2. как да използвате каскада в оракул

  3. Oracle автоматично вмъква запис в блок с множество записи, част 2

  4. как да декларирам SQLCA.SQLERRD?

  5. Може ли операция за вмъкване да накара друга DDL операция да изчака?