Chỉ cần sử dụng kết hợp có điều kiện:
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;
Tổng hợp có điều kiện thì linh hoạt hơn nhiều pivot
. Cá nhân tôi thấy không có lý do gì cho pivot
cú pháp:nó hoạt động tốt một điều, nhưng không phải là một khối xây dựng như cách các câu lệnh SQL truyền thống.
ROLLUP()
cũng khá hữu ích. Bạn cũng có thể sử dụng:
GROUP BY GROUPING SETS ( (CUSTOMER), () )