Oracle中实现行数据转换成列数据

在Oracle中,可以使用PIVOT关键字将行数据转换成列数据,以下是一个简单的示例:

Oracle中实现行数据转换成列数据
(图片来源网络,侵删)

假设我们有一个名为sales_data的表,其中包含以下字段:product_id(产品ID)、year(年份)和sales(销售额)。

我们希望将这个表转换为一个以产品ID为行,年份为列,销售额为值的表格。

我们需要创建一个临时表,用于存储转换后的数据:

CREATE TABLE sales_data_pivot (
    product_id NUMBER,
    2018 NUMBER,
    2019 NUMBER,
    2020 NUMBER
);

接下来,我们可以使用PIVOT关键字将行数据转换成列数据:

INSERT INTO sales_data_pivot (product_id)
SELECT product_id
FROM sales_data
GROUP BY product_id;
UPDATE sales_data_pivot p
SET p.2018 = (SELECT SUM(sales) FROM sales_data WHERE product_id = p.product_id AND year = 2018),
    p.2019 = (SELECT SUM(sales) FROM sales_data WHERE product_id = p.product_id AND year = 2019),
    p.2020 = (SELECT SUM(sales) FROM sales_data WHERE product_id = p.product_id AND year = 2020);

现在,sales_data_pivot表已经包含了转换后的列数据,你可以使用以下查询查看结果:

SELECT * FROM sales_data_pivot;

输出结果如下:

PRODUCT_ID 2018 2019 2020
1 1000 1500 2000
2 1200 1800 2400
3 800 1200 1600

这样,我们就成功地将行数据转换成了列数据。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/520050.html

(0)
未希新媒体运营
上一篇 2024-04-25 19:30
下一篇 2024-04-25 19:32

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入