条件付き集計を使用するだけです:
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;
条件付き集計は、pivot
よりもはるかに柔軟性があります 。個人的には、pivot
の理由はわかりません。 構文:1つのことをうまく実行しますが、従来のSQLステートメントのような構成要素ではありません。
ROLLUP()
また、非常に役立ちます。以下も使用できます:
GROUP BY GROUPING SETS ( (CUSTOMER), () )