sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL - Pivot tabelrækker til kolonne og brug underforespørgsel i pivot

Brug blot betinget 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;

Betinget aggregering er meget mere fleksibel end pivot . Personligt ser jeg ingen grund til pivot syntaks:det gør én ting godt, men er ikke en byggesten, som traditionen SQL-sætninger er.

ROLLUP() er også ret nyttigt. Du kan også bruge:

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


  1. FindByUUID() ved hjælp af Spring Data's JPA Repository

  2. mysql for mange indekser?

  3. Sekvens eksisterer ikke, når den gør - Postgres/Spring Boot

  4. Kan SQL Server Express LocalDB tilsluttes eksternt?