sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL - Pivottabellrader till kolumn och använd underfråga i pivot

Använd bara villkorlig aggregering:

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;

Villkorlig aggregering är mycket mer flexibel än pivot . Personligen ser jag ingen anledning till pivot syntax:det gör en sak bra, men är inte en byggsten på det sätt som traditionella SQL-satser är.

ROLLUP() är också till stor hjälp. Du kan också använda:

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


  1. Rails Migration byter kolumn för att använda Postgres-matriser

  2. Python utmanar strängkodning

  3. Hur infogar man flera arrayer i en databas?

  4. Datumformat i asp till excel-form