PL/SQL 实现行列转换
来源:互联网 发布:c语言流程图规范 编辑:程序博客网 时间:2024/05/16 02:51
这篇博文写的是简单的行列转换的,以一个具体的例子来给出。
以前在论坛上有人问过相关的问题,上面的回答五光十色,有很多是可行的,当然更多的是自以为很高端,实际却不着边际的回答。下面进入正题。
part1:列转行。需求:
示例给出这么一张表:
表定义如下:
create table TEST_TB_GRADE ( ID NUMBER(10) not null, USER_NAME VARCHAR2(20 CHAR), COURSE VARCHAR2(20 CHAR), SCORE FLOAT )
要求转换成为:
下面给出一个可行的PL/SQL语句:
select t.user_name as 姓名, sum(decode(t.course, '语文', score,null)) as 语文, sum(decode(t.course, '数学', score,null)) as 数学, sum(decode(t.course, '英语', score,null)) as 英语 from test_tb_grade t group by t.user_name order by t.user_name
实现效果如下图需求所示。
Part2:行转列。需求:
示例给出这样一张表
表结构如下:
create table TEST_TB_GRADE2 ( ID NUMBER(10) not null, USER_NAME VARCHAR2(20 CHAR), CN_SCORE FLOAT, MATH_SCORE FLOAT, EN_SCORE FLOAT )
需要转换成如下形式:
下面给出一个可执行的PL/SQL语句:
select user_name, '语文' as COURSE , CN_SCORE as SCORE from test_tb_grade2 union allselect user_name, '数学' as COURSE, MATH_SCORE as SCORE from test_tb_grade2 union allselect user_name, '英语' as COURSE, EN_SCORE as SCORE from test_tb_grade2 order by user_name,COURSE
实现效果如下图需求所示。
转载自:http://www.cnblogs.com/DebugLZQ/archive/2012/07/23/2604687.html
0 0
- PL/SQL 实现行列转换
- SQL 实现行列转换
- SQL实现行列转换
- Sql实现行列转换
- sql实现行列转换
- sql pivot 实现行列转换
- SQL 实现行列转换示例
- 应用SQL交叉表实现行列转换
- 如何用SQL语句实现行列转换
- SQL server2005中用pivot实现行列转换
- sql 实现表的行列转换
- SQL通过PIVOT/UNPIVOT实现行列转换
- SQL进行行列转换
- SQL的行列转换
- sql 行列转换
- SQL 行列转换查询
- SQL 行列转换查询
- SQL行列转换实战
- 【Leetcode】Best Time to Buy and Sell Stock
- Android学好Shape不再依赖美工
- 【小白笔记】PHP学习之路 (15) --数组(5)
- Hibernate get和load区别
- Ubuntu关闭进程
- PL/SQL 实现行列转换
- IOS高访新浪微博界面(讲解如何自定义UITableViewCell,处理@#链接 特殊字符)
- 动态修改jar包中xml的Demo实现
- 心
- 底部Tab的实现(tabhost)
- getOutputStream() has already been called for this response
- SQLite中的时间日期函数
- 多线程实现数据库批量数据插入
- 慎用fn:contains,使用c:forEach替代