Oracle多列数据转成多行数据(列转行)
在Oracle中,可以使用UNPIVOT
操作将多列数据转换成多行数据。以下是一个简单的例子:
假设有一个名为sales_data
的表,其结构如下:
year | product_a | product_b | product_c
-----------------------------------------
2020 | 100 | 200 | 300
2021 | 150 | 220 | 310
要将product_a
、product_b
和product_c
的数据转换成多行格式,可以使用以下SQL查询:
SELECT year, product, sales
FROM (
SELECT year, product_a, product_b, product_c
FROM sales_data
)
UNPIVOT (
sales FOR product IN (product_a AS 'Product A', product_b AS 'Product B', product_c AS 'Product C')
)
ORDER BY year, product;
执行上述查询后,结果将是:
year | product | sales
-------------------------
2020 | Product A | 100
2020 | Product B | 200
2020 | Product C | 300
2021 | Product A | 150
2021 | Product B | 220
2021 | Product C | 310
这里使用了UNPIVOT
操作符,它将列转换成行,FOR product IN (...)
定义了需要转换的列和它们对应的行值。
评论已关闭