ORACLE行转列、列转行实现方式及案例
在Oracle数据库中,行转列通常可以通过PIVOT
函数实现,而列转行可以通过UNPIVOT
函数实现。
以下是一个简单的行转列和列转行的例子:
假设我们有一个销售数据表sales_data
,包含了年份、产品和销售额三个字段,如下所示:
CREATE TABLE sales_data (
year INT,
product VARCHAR2(50),
amount NUMBER
);
INSERT INTO sales_data VALUES (2020, 'Product A', 150);
INSERT INTO sales_data VALUES (2020, 'Product B', 200);
INSERT INTO sales_data VALUES (2021, 'Product A', 180);
INSERT INTO sales_data VALUES (2021, 'Product B', 220);
行转列的操作可以将产品的销售数据从行格式转为列格式:
SELECT * FROM (
SELECT year, product, amount
FROM sales_data
)
PIVOT (
SUM(amount)
FOR product IN ('Product A' AS product_a, 'Product B' AS product_b)
) ORDER BY year;
列转行的操作可以将产品的销售数据从列格式转为行格式:
SELECT * FROM (
SELECT year, product, amount
FROM sales_data
)
UNPIVOT (
amount FOR product IN (product_a, product_b)
) ORDER BY year;
这些例子展示了如何在Oracle数据库中实现行转列和列转行的操作。
评论已关闭