注册
使用UNPIVOT,将宽格式的数据转换为长格式的数据,即将多个相关的列展开成一行中的单个列加上一个标识列
技术分享/ 文章详情 /

使用UNPIVOT,将宽格式的数据转换为长格式的数据,即将多个相关的列展开成一行中的单个列加上一个标识列

Chai 2024/11/01 402 0 0

–使用UNPIVOT,将宽格式的数据转换为长格式的数据,即将多个相关的列展开成一行中的单个列加上一个标识列
CREATE TABLE inventory (
Product VARCHAR2(50),
WarehouseA NUMBER,
WarehouseB NUMBER,
WarehouseC NUMBER
);

INSERT INTO inventory (Product, WarehouseA, WarehouseB, WarehouseC) VALUES (‘Apple’, 100, 150, 200);
INSERT INTO inventory (Product, WarehouseA, WarehouseB, WarehouseC) VALUES (‘Banana’, 200, 250, 300);

select * from inventory;

SELECT Product, Warehouse, Quantity
FROM inventory
UNPIVOT (
Quantity FOR Warehouse IN (
WarehouseA AS ‘WarehouseA’,
WarehouseB AS ‘WarehouseB’,
WarehouseC AS ‘WarehouseC’
)
) AS unpivoted_inventory;

CREATE TABLE emp (
emp_id INT,
emp_name VARCHAR(50),
emp_salary_grade VARCHAR,
emp_department VARCHAR(50)
);

INSERT INTO emp VALUES (1, ‘Alice’, 1, ‘Human Resources’);
INSERT INTO emp VALUES (2, ‘Bob’, 2, ‘Sales’);
INSERT INTO emp VALUES (3, ‘Charlie’, 3, ‘Marketing’);
commit;

select * from emp;
image.png
SELECT emp_id, emp_attribute, emp_value
FROM emp
UNPIVOT (
emp_value FOR emp_attribute IN (emp_name, emp_salary_grade, emp_department)
);
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服