Oracle UNPIVOT 函數用于將表中的多個列轉換為單個列,并在輸出中顯示原始列名和對應值
SELECT *
FROM table_name
UNPIVOT (
value_column_name
FOR column_name_column
IN (column1 AS 'column1_value', column2 AS 'column2_value', ...)
);
其中:
table_name
:要進行逆規范化操作的表名。value_column_name
:新生成的值列的列名。column_name_column
:新生成的列名列的列名。column1
, column2
, …:需要進行逆規范化操作的原始列名。'column1_value'
, 'column2_value'
, …:分配給原始列名的別名。例如,假設有一個名為 sales_data
的表,包含以下列:product
, q1_sales
, q2_sales
。要使用 UNPIVOT 函數將 q1_sales
和 q2_sales
列轉換為單個列,可以使用以下查詢:
SELECT product, quarter, sales
FROM sales_data
UNPIVOT (
sales
FOR quarter
IN (q1_sales AS 'Q1', q2_sales AS 'Q2')
);
這將返回一個結果集,其中包含 product
、quarter
和 sales
列,其中 quarter
列的值為 ‘Q1’ 或 ‘Q2’,sales
列的值為原始表中 q1_sales
或 q2_sales
列的值。