【发布时间】:2018-11-05 08:16:30
【问题描述】:
我正在开发 Oracle 12c R1 db,并有一个包含示例数据的示例视图,如下所示:
视图名称:CUST_HOTEL_VIEW
+----------------+---------------+---------------+
| Customer | Hotel | Booked Status |
+----------------+---------------+---------------+
| John Smith | Beverly Hills | Booked |
| John Smith | Royal Palms | |
| Marilyn Lawson | Beverly Hills | |
| John Smith | Ritz-Carlton | |
| Marilyn Lawson | Royal Palms | |
| Sarah Elliot | Royal Palms | |
| Sarah Elliot | Ritz-Carlton | Booked |
| Sarah Elliot | Royal Palms | Booked |
+----------------+---------------+---------------+
根据上面的数据,我试图通过行总计、列总计和每位客户预订的酒店数量低于枢轴输出:
+----------------+-------------+---------------+--------------+-------------+----------+
| Customer | Royal Palms | Beverly Hills | Ritz-Carlton | Grand Total | # Booked |
+----------------+-------------+---------------+--------------+-------------+----------+
| John Smith | 1 | 1 | 1 | 3 | 1 |
| Marilyn Lawson | 1 | 1 | | 2 | - |
| Sarah Elliot | 2 | | 1 | 3 | 2 |
| Grand Total | 4 | 2 | 2 | 8 | 3 |
+----------------+-------------+---------------+--------------+-------------+----------+
我尝试了下面的查询来生成数据透视数据
SELECT * FROM
(
SELECT CUSTOMER, HOTEL
FROM CUST_HOTEL_VIEW
)
PIVOT
(
COUNT(HOTEL)
FOR HOTEL IN ('Royal Palms' as "Royal Palms",'Beverly Hills' as "Beverly Hills",'Ritz-Carlton' as "Ritz-Carlton")
)
ORDER BY CUSTOMER
我想知道:
1. 如何包含行总计
2. 如何包含列总计
3.如何包括预订酒店数量和
3. 是否可以在 PIVOT FOR HOTEL IN 子句中编写子查询。 (我尝试了子查询但出现错误)
我很感激这方面的任何帮助。
谢谢,
里查
【问题讨论】:
-
哇太棒了.. 感谢 Barbaros Özhan、Gordon Linoff、Shrek 和 G.Arima。你们真棒。我无法想象一个问题有这么多种解决方案。
-
非常感谢您提供的所有帮助以及您宝贵的时间。