oracle固定列的行列转换
来源:互联网 发布:淘宝宝贝详情视频制作 编辑:程序博客网 时间:2024/05/20 03:06
先建个表吧~
create table kecheng
(
id NUMBER,
name VARCHAR2(20),
course VARCHAR2(20),
score NUMBER
);
insert into kecheng (id, name, course, score)
values (1, ‘张三’, ‘语文’, 67);
insert into kecheng (id, name, course, score)
values (1, ‘张三’, ‘数学’, 76);
insert into kecheng (id, name, course, score)
values (1, ‘张三’, ‘英语’, 43);
insert into kecheng (id, name, course, score)
values (1, ‘张三’, ‘历史’, 56);
insert into kecheng (id, name, course, score)
values (1, ‘张三’, ‘化学’, 11);
insert into kecheng (id, name, course, score)
values (2, ‘李四’, ‘语文’, 54);
insert into kecheng (id, name, course, score)
values (2, ‘李四’, ‘数学’, 81);
insert into kecheng (id, name, course, score)
values (2, ‘李四’, ‘英语’, 64);
insert into kecheng (id, name, course, score)
values (2, ‘李四’, ‘历史’, 93);
insert into kecheng (id, name, course, score)
values (2, ‘李四’, ‘化学’, 27);
insert into kecheng (id, name, course, score)
values (3, ‘王五’, ‘语文’, 24);
insert into kecheng (id, name, course, score)
values (3, ‘王五’, ‘数学’, 25);
insert into kecheng (id, name, course, score)
values (3, ‘王五’, ‘英语’, 8);
insert into kecheng (id, name, course, score)
values (3, ‘王五’, ‘历史’, 45);
insert into kecheng (id, name, course, score)
values (3, ‘王五’, ‘化学’, 1);
commit;
1.Decode方式(固定列)
介绍下decode()函数decode(A,’B’,C,’D’)
如果A为B就把A替换成C否则显示D
SELECT ID,NAME,
SUM(DECODE(course,’语文’,score,0)) 语文,–这里使用max,min都可以~
SUM(DECODE(course,’数学’,score,0)) 数学,
SUM(DECODE(course,’英语’,score,0)) 英语,
SUM(DECODE(course,’历史’,score,0)) 历史,
SUM(DECODE(course,’化学’,score,0)) 化学
FROM kecheng GROUP BY ID ,NAME
2.Case方式
Case when A=B then C else D end
当A等于B的时候,A显示为C否则显示D
SELECT ID,NAME,
MAX(CASE WHEN course = ‘语文’ THEN score ELSE 0 END) 语文,
MAX(CASE WHEN course = ‘英语’ THEN score ELSE 0 END) 英语,
MAX(CASE WHEN course = ‘历史’ THEN score ELSE 0 END) 历史,
MAX(CASE WHEN course = ‘数学’ THEN score ELSE 0 END) 数学,
MAX(CASE WHEN course = ‘化学’ THEN score ELSE 0 END) 化学
FROM kecheng GROUP BY ID,NAME
输出结果跟上方相同的
3.wmsys.wm_concat行列转换函数
这玩意儿的前世今生,想必大多人都知道
想当年,在我们需要将某字段多行内容拼接起来的时候,wm_concat提供了很好的方法
这使得这个未公开的函数,得到了广泛的宣传与运用
但是,不公开,英文是undocumented,就意味着随时可能发生变更
这不,10.2.0.5上,其返回类型从varchar2变为了clob
而在12c当中,干脆就取消了此函数,这个函数不能用也是正常的,会提示标识符无效~
SELECT ID,NAME,wm_concat(course || ‘:’||score) a FROM kecheng GROUP BY ID ,NAME;
- oracle固定列的行列转换
- oracle SQL 固定列 行列转换
- 行列转换之列不固定
- Oracle的行列转换
- Oracle的行列转换
- Oracle的行列转换
- ORACLE不定列行列转换(ZT)
- 关于oracle 的行列转换
- 关于ORACLE的行列转换
- 列转行-行列转换
- oracle中的行列转换(一 列转行 pivot)
- Oracle中实现行列转换的方法
- Oracle中实现行列转换的方法
- 利用函数实现的oracle行列转换
- 较复杂的ORACLE行列转换
- Oracle行列转换的几种方法
- oracle 一个有趣的行列转换问题
- oracle 一个有趣的行列转换问题
- fabric源码解析5——kvledger初始化
- A
- nhmicro添加贷款进件管理与审批功能
- [读书笔记] 《Python 机器学习》- 过拟合的几种解决方法
- 《神经网络设计》读书笔记——反向传播算法
- oracle固定列的行列转换
- Mysql的七种表类型
- PAT 1016部分A+B
- 拉格朗日乘数和KTT条件
- 直播or短视频,谁才是大势所趋?
- hdu 4390 隔板+容斥
- Word组件 Spire.Doc 教程:如何在C#,VB.NET中将XML转换为PDF
- Redis 存储List对象
- java enum枚举类型的使用