Oracle UNPIVOT 函数可以将多个列的数据转换为行
PRODUCT | JAN_SALES | FEB_SALES | MAR_SALES
---------|------------|-----------|-----------
A | 100 | 200 | 300
B | 400 | 500 | 600
SELECT PRODUCT, MONTH, SALES
FROM SALES_DATA
UNPIVOT (SALES FOR MONTH IN (JAN_SALES AS 'Jan', FEB_SALES AS 'Feb', MAR_SALES AS 'Mar'));
这将返回以下结果:
PRODUCT | MONTH | SALES
---------|-------|-------
A | Jan | 100
A | Feb | 200
A | Mar | 300
B | Jan | 400
B | Feb | 500
B | Mar | 600
在此示例中,我们使用 UNPIVOT 子句将 JAN_SALES、FEB_SALES 和 MAR_SALES 列转换为行。UNPIVOT 子句中的 FOR 子句定义了新的 MONTH 列,该列包含原始列名(‘Jan’、‘Feb’ 和 ‘Mar’)。SALES 列包含这些月份的销售额。
通过使用 Oracle UNPIVOT 函数,您可以轻松地将多列数据转换为行格式,从而实现数据透视。