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