unpivot 操作符將 oracle 中的行數據轉換為列數據,用于更易于分析和查詢。它將包含多個行列的數據集轉換為一個帶有 id 列和值列的新數據集,其中 id 列表示原始行,值列包含原始列中的值。unpivot 語法為:select * from unpivot(table_name) as unpivoted_table[where pivot_condition]。其優點包括簡化查詢、提高性能和支持數據透視。例如,可以將銷售季度數據轉換為列,以便根據產品和季度輕松分析銷售額。
Oracle 中的 UNPIVOT 用法
UNPIVOT 是什么?
UNPIVOT 是一種 Oracle 操作符,用于將行數據轉換為列數據。它將一個包含多行、多列的數據集轉換為一個包含兩列的新數據集:一個 ID 列(表示原始行)和一個值列(包含原始列中的值)。
UNPIVOT 用法
UNPIVOT 語法如下:
<code>SELECT * FROM UNPIVOT(table_name) [AS unpivoted_table] [FOR column_name IN (column_list)] [WHERE pivot_condition]</code>
登錄后復制
其中:
table_name
是要轉換的數據集的名稱。
column_name
是要轉換為列的原始列的名稱。
column_list
是要轉換為列的原始列的列表。
pivot_condition
是可選的條件,用于過濾要轉換為列的數據。
示例
假設有一個名為 sales
的數據集,其中包含以下列:
product_id
product_name
sales_q1
sales_q2
sales_q3
sales_q4
要將銷售季度數據轉換為列,可以使用以下 UNPIVOT 查詢:
<code>SELECT * FROM UNPIVOT(sales) AS unpivoted_sales FOR sales_quarter IN (sales_q1, sales_q2, sales_q3, sales_q4)</code>
登錄后復制
結果數據集將如下所示:
product_id | product_name | sales_quarter | sales_value |
---|---|---|---|
1 | Product A | Q1 | 100 |
1 | Product A | Q2 | 200 |
1 | Product A | Q3 | 300 |
1 | Product A | Q4 | 400 |
2 | Product B | Q1 | 500 |
2 | Product B | Q2 | 600 |
2 | Product B | Q3 | 700 |
2 | Product B | Q4 | 800 |
UNPIVOT 的優點
使用 UNPIVOT 有以下優點:
將行數據轉換為更易于分析的列數據。
簡化查詢和報告設計。
提高數據聚合和透視表的性能。