sql - 将所有列取消透视(或替代)成行
问题描述
我有以下数据:
create table test(c1 number,
c2 number,
c3 number,
c4 number,
c5 number);
insert into test (c1,c2,c3,c4,c5) values(2000,1844054,50.03,922030,25.01);
insert into test (c1,c2,c3,c4,c5) values(2001,1850861,49.86,937391,25.25);
insert into test (c1,c2,c3,c4,c5) values(2002,1841519,50.32,907995,24.81);
insert into test (c1,c2,c3,c4,c5) values(2003,1804163,49.84,902838,24.94);
我需要从以下位置翻译数据:
c1 | c2 | c3 | c4 | c5
2000 | 1844054 | 50.03 | 922030 | 25.01
2001 | 1850861 | 49.86 | 937391 | 25.25
2002 | 1841519 | 50.32 | 907995 | 24.81
2003 | 1804163 | 49.84 | 902838 | 24.94
到:
c1 | 2000 | 2001 | 2002 | 2003
c2 | 1844054 | 1850861 | 1841519 | 1804163
c3 | 50.03 | 49.86 | 50.32 | 49.84
c4 | 922030 | 937391 | 907995 | 902838
c5 | 25.01 | 25.25 | 24.81 | 24.94
我没有成功进行常规 PIVOT,所以我向您寻求帮助,谢谢。
解决方案
您正在转置,而不仅仅是旋转。你需要UNPIVOT
,那么PIVOT
。
select * from test
unpivot(c for col in(c2,c3,c4,c5))
pivot(max(c) for c1 in(2000,2001,2002,2003))
order by col;
CO 2000 2001 2002 2003
-- ---------- ---------- ---------- ----------
C2 1844054 1850861 1841519 1804163
C3 50.03 49.86 50.32 49.84
C4 922030 937391 907995 902838
C5 25.01 25.25 24.81 24.94
推荐阅读
- database - 我可以删除主键而不删除引用的外键吗?
- django - 如何在 django 模板中动态显示图像?
- angular - 415 Unsupported media Type in http.post Angular 请求
- ios - 如何从我的 iphone 浏览我的应用程序的 pdf 文件,就像我可以通过 ibooks 浏览 pdf 文件一样?
- docker - 使用 docker-compose.yml 中的命令等待 docker 容器准备就绪
- algorithm - 解决这个问题的最佳方法是什么?
- macos - Automator mac“您无权将文件移动到垃圾箱”
- java - 调用 onResume 时出现 NFC DeadObjectException
- elasticsearch - 如何获取与部分文本匹配的元素
- node.js - 如何扫描表中的所有项目并删除它们?