Oracle 中的 PIVOT 函數可以將行數據轉換為列數據,這在報表和數據分析中非常有用
假設我們有一個銷售數據表 sales_data,其結構如下:
CREATE TABLE sales_data (
product_id NUMBER,
month VARCHAR2(10),
revenue NUMBER
);
現在,我們想要查詢每個產品在每個月的收入情況。使用 PIVOT 函數,我們可以將數據從行轉換為列。以下是使用 PIVOT 函數的 SQL 語句:
SELECT *
FROM (
SELECT product_id, month, revenue
FROM sales_data
)
PIVOT (
SUM(revenue)
FOR month IN ('January' AS "January", 'February' AS "February", 'March' AS "March")
);
在這個例子中,我們首先從 sales_data 表中選擇 product_id、month 和 revenue 列。然后,我們使用 PIVOT 函數對數據進行轉換。在 PIVOT 子句中,我們使用 SUM 函數對收入進行求和,并使用 FOR 子句指定要轉換的列(在本例中為 month)。最后,我們使用 IN 子句列出了要轉換的月份值,并為每個月指定了一個別名。
執行此 SQL 語句后,結果集將顯示每個產品在每個月的收入情況,如下所示:
PRODUCT_ID | January | February | March
-----------+---------+----------+------
1 | 1000 | 1500 | 2000
2 | 500 | 750 | 1000
通過使用 Oracle 的 PIVOT 函數,我們可以輕松地將行數據轉換為列數據,從而更好地分析和呈現數據。