Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL - Przestaw wiersze tabeli na kolumnę i użyj podzapytania w przestawieniu

Po prostu użyj agregacji warunkowej:

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;

Agregacja warunkowa jest znacznie bardziej elastyczna niż pivot . Osobiście nie widzę powodu dla pivot składnia:robi jedną rzecz dobrze, ale nie jest elementem konstrukcyjnym, jak tradycyjne instrukcje SQL.

ROLLUP() jest również bardzo pomocny. Możesz także użyć:

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. Egzekwowanie klucza unikalnego/podstawowego – indeks odrzucenia

  2. Drukowanie znaków jeden po drugim z ciągu (VARCHAR2) oracle sql bez użycia plsql, a także bez użycia dual

  3. java.sql.SQLException:ORA-01843:niepoprawny błąd miesiąca

  4. Problem z konwersją Oracle SQL DATE przy użyciu iBATIS przez Java JDBC

  5. Podziel ciąg na spację i znak jako ogranicznik w Oracle za pomocą regexp_substr