sql >> Database >  >> RDS >> Oracle

Oracle SQL - Draai tabelrijen naar kolom en gebruik subquery in pivot

Gebruik gewoon voorwaardelijke aggregatie:

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;

Voorwaardelijke aggregatie is veel flexibeler dan pivot . Persoonlijk zie ik geen reden voor de pivot syntaxis:het doet één ding goed, maar is geen bouwsteen zoals traditionele SQL-instructies zijn.

ROLLUP() is ook heel handig. U kunt ook het volgende gebruiken:

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


  1. Website down en Twitter-feed

  2. Hoe voeg ik een BC-datum in Oracle in?

  3. DATEADD, DATEDIFF en DATEPART T-SQL-functies in eenvoudige bewoordingen gebruiken

  4. Beperking op een type controleren