用ORACLE分析函数实现行列转换
1 引言
2 原理
2.1 分析函数的格式及语法
2.2 实例原理介绍
3 实例
Create Table temp
(
num varchar2(15 Char),
name varchar2(20 Char),
sex varchar2(2 Char),
classes varchar2(30 Char),
course_name varchar2(50 Char)
);
insert into temp(num,name,sex,classes,course_name) values ('206212','肖薇','女','06-2','保险学');
insert into temp(num,name,sex,classes,course_name) values ('206212','肖薇','女','06-2','财务管理');
insert into temp(num,name,sex,classes,course_name) values ('206212','肖薇','女','06-2','财务会计');
insert into temp(num,name,sex,classes,course_name) values ('206213','陈雅诗','女','06-2','电子商务');
insert into temp(num,name,sex,classes,course_name) values ('206213','陈雅诗','女','06-2','公共经济学');
insert into temp(num,name,sex,classes,course_name) values ('206213','陈雅诗','女','06-2','公司理财');
insert into temp(num,name,sex,classes,course_name) values ('206213','陈雅诗','女','06-2','管理学原理');
insert into temp(num,name,sex,classes,course_name) values ('206213','陈雅诗','女','06-2','保险学');
insert into temp(num,name,sex,classes,course_name) values ('206214','李丹阳','男','06-1','保险学');
insert into temp(num,name,sex,classes,course_name) values ('206214','李丹阳','男','06-1','财务管理');
insert into temp(num,name,sex,classes,course_name) values ('206214','李丹阳','男','06-1','财务会计');
insert into temp(num,name,sex,classes,course_name) values ('206214','李丹阳','男','06-1','电子商务');
insert into temp(num,name,sex,classes,course_name) values ('206214','李丹阳','男','06-1','公共经济学');
insert into temp(num,name,sex,classes,course_name) values ('206215','杨伊琳','女','06-3班','环境管理学');
insert into temp(num,name,sex,classes,course_name) values ('206215','杨伊琳','女','06-3班','管理学原理');
insert into temp(num,name,sex,classes,course_name) values ('206215','杨伊琳','女','06-3班','商务谈判');
insert into temp(num,name,sex,classes,course_name) values ('206216','李佳琪','男','06-2','土地估计');
Commit;
3)先查一下course_name最多的组合
from temp
group by num,name,sex,classes;
row_number() over(partition by num,name,sex,classes order by course_name) rn
from temp;
max(decode(rn,1,course_name,null)) course_name_1,
max(decode(rn,2,course_name,null)) course_name_2,
max(decode(rn,3,course_name,null)) course_name_3,
max(decode(rn,4,course_name,null)) course_name_4,
max(decode(rn,5,course_name,null)) course_name_5
from (select num,name,sex,classes,course_name,
row_number() over(partition by num,name,sex,classes order by course_name) rn
from temp)
group by num,name,sex,classes;
(max(decode(rn,1,course_name,null)) || max(decode(rn,2,',' || course_name,null)) || max(decode(rn,3,',' || course_name,null)) || max(decode(rn,4,',' || course_name,null)) ||
max(decode(rn,5,',' || course_name,null))) name
from (select num,name,sex,classes,course_name,
row_number() over(partition by num,name,sex,classes order by course_name) rn
from temp)
group by num,name,sex,classes;
4 总结
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/658202/viewspace-1036990/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/658202/viewspace-1036990/
用ORACLE分析函数实现行列转换相关推荐
- 使用分析函数进行行列转换
其实使用分析函数进行处理是很好的方式,翻一下Tom的书,将其中的一个例子收录在这里. 比如查询scott.emp表的用户SAL排序信息,可以使用如下查询: SQL> SELECT deptno, ...
- oracle数据库,行列转换
1.所需表的建立与插入数据 无论是在工作中还是在面试中,常常有一类问题经常出现: 依据现有数据,将以行(列)展示的数据转换为以列(行)的形式展示 测试表:SCORE_1/SCORE_2 --建表 插 ...
- (转)Oracle中实现行列转换的方法
(转自)http://blog.csdn.net/Torrice/archive/2006/01/25/587986.aspx 我们在写SQL语句的时候经常需要用到行与列的转换问题,对于一个新手来说可 ...
- Oracle 行列转换
Oracle 行列转换 1.固定列数的行列转换 如 student subject grade --------- ---------- -------- student1 语文 80 student ...
- oracle中行列转换总结
oracle中行列转换 1.行列转换包括以下六种情况: 2. 列转行 2.1 UNION ALL 2.2 MODEL 2.3 COLLECTION 2.4 UNPIVOT 3. 行转列 3.1 AGG ...
- Oracle如何实现动态行列转换,Oracle实现行列转换的方法分析
本文实例讲述了Oracle实现行列转换的方法.分享给大家供大家参考,具体如下: 1.固定列数的行列转换 如: sql;"> student subject grade -------- ...
- oracle行列转换总结
最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结, 希望对大家有所帮助,同时有何错疏,恳请大家指出, 我也是在写作过程中学习,算是一起和大家学习吧. 行列转换包括以下六 ...
- Oracle行列转换的思考与总结
最近几天一直在弄Oracle-SQL的问题,涉及到了一些平时没有用到的东西,也因此而在这里郁闷了好久.现在问题得到了解决虽说不算完美.但是还是和大家一起分享一下. 行列转换之一:sum(case wh ...
- oracle非常量不能用于privot_Oracle 行列转换函数pivot、unpivot的使用(二)
一.行转列pivot 关键函数pivot,其用法如下 pivot(聚合函数 for 列名 in(类型)) select * from table_name pivot(max(column_name) ...
最新文章
- db2删除大量数据_Python 连接数据库的多种方法
- js取小数点后两位数的方法
- 2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...
- 移植memtester到android平台
- 英文书《用unreal来学习c++》_用机器学习来概括《哈利波特》,四句话总结一场戏...
- leetcode - 638. 大礼包
- JavaScript设计模式(二)-- 工厂方法模式
- AspxTreeList获取选中项的值
- mysql排序快还是list排序快_2018全国农产品批发市场行业百强排序出炉,快看广西有几个?...
- emq 重启_EMQ集群
- nginx linux 系统服务,把ngnix注册为linux服务 将Nginx设置为linux下的服务
- orientdb java_OrientDB Java连接操作
- 服务器1U,2U的含义
- 西门子SMART 200 modbus rtu通讯宇电温控器例程
- 商业智能BI与业务管理决策思维之三:业务质量分析
- IDEA中SVN项目不同颜色含义
- 手机计算机怎么玩24点游戏,计算器游戏怎么玩 新手前期玩法介绍
- wechat4j开发-菜单创建
- 如何更改layui弹出层样式
- SD-WAN,让你的组网更灵活