Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL - Faire pivoter les lignes du tableau vers la colonne et utiliser la sous-requête dans le pivot

Utilisez simplement l'agrégation conditionnelle :

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;

L'agrégation conditionnelle est beaucoup plus flexible que pivot . Personnellement, je ne vois aucune raison pour le pivot syntaxe :elle fait bien une chose, mais n'est pas un bloc de construction comme le sont les instructions SQL traditionnelles.

ROLLUP() est également très utile. Vous pouvez également utiliser :

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