PL/SQL 实现行列转换
这篇博文写的是简单的行列转换的,以一个具体的例子来给出。
以前在论坛上有人问过相关的问题,上面的回答五光十色,有很多是可行的,当然更多的是自以为很高端,实际却不着边际的回答。下面进入正题。
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 all select user_name, '数学' as COURSE, MATH_SCORE as SCORE from test_tb_grade2 union all select user_name, '英语' as COURSE, EN_SCORE as SCORE from test_tb_grade2 order by user_name,COURSE
实现效果如下图需求所示。
本文旨以一个具体的例子,给出一种Oracle中行列转换的方案,没有什么可圈可点的地方,欢迎给出其他实现,也欢迎批评指正!
【请点击下面的“绿色通道”-----“关注DebugLZQ” ,共同交流进步~】
转载于:https://www.cnblogs.com/DebugLZQ/archive/2012/07/23/2604687.html
PL/SQL 实现行列转换相关推荐
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- SQL Server 行列转换(1)
参考前一个SQL的行列转换例子http://www.cnblogs.com/insus/articles/1969896.html ,觉得不够自由,需要去预先知道记录的内容去定义行或列. 下面这个方法 ...
- 一些sql 语句(行列转换等)
1. 行列转换--普通 假设有张学生成绩表(CJ)如下 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 8 ...
- oracle转换指定类型,PL/SQL 类型格式转换
PL/SQL 类型格式转换 更新时间:2007年03月21日 00:00:00 作者: TO_NUMBER(char[,'format_model']) 字符转换到数字类型 TO_DATE(ch ...
- [转载]SQL Server行列转换实现
一.Pivot和UnPivot介绍 1.Pivot介绍 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVO ...
- SQL Server 行列转换(2)
参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果: 参考代码: View Code ...
- mysql行列转换case_浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用_MySQL...
bitsCN.com /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT ...
- mysql pivot函数怎么用_浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用...
/*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT IDENTITY(1 ...
- SQL SERVER 行列转换(1)——聚合函数静态转换
在实际开发中,有时候需要对数据表进行行列转换,转换之后再显示对应的数据,行列转换的方法比较多,本次介绍静态的利用聚合函数来实现,行转列测试数据: --测试数据 if not object_id(N'T ...
最新文章
- Linux 之 Kickstart
- 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
- mui 打开openWindow新页面不读取缓存的设置/mui中h5清除缓存页面的办法
- Asynchronous Processing Basics || Use Future Methods
- 浅谈文献总结(2018.9.28)——坚恒勇毅论文课笔记
- Vijos P1067Warcraft III 守望者的烦恼
- suse linux10 关闭防火墙,Suse10 关闭防火墙
- webpack-plugin-webpack.DefinePlugin-应用全局变量,svn-rep-browser
- ffmpeg推送摄像头rtmp流
- atomikos log already in use
- python 魔法方法常用_Python 常用魔法方法(下)
- 六一儿童节特辑|哪部“奥特曼”才是90后的心中最爱??数据分析师来告诉你...
- [2019杭电多校第四场][hdu6623]Minimal Power of Prime
- 基于排队论模型的收银台服务系统的分析及可视化设计
- 抖音的服务器究竟有多大
- Win11声卡驱动怎么更新?Win11声卡驱动更新方法
- gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
- AD20 输出制板文件小记
- STM32使用模拟I2C读取硒翔30mL流量传感器
- 基于jsp的教师科研工作量_高校教师科研工作量考核与管理暂行办法
热门文章
- Ubuntu有了第一个全球CDN更新源
- ubuntu git cntlm 代理 不能下载
- L1-073 人与神 (5 分)-PAT 团体程序设计天梯赛 GPLT
- LeetCode 22. Generate Parentheses
- 并发程序设计模式之Future模式
- 【Objective-C】java中的interface与Objective-C中的interface的区别
- 蓝桥杯 ADV-165算法提高 超级玛丽(动态规划、递推)
- 如何修改firefox的默认缩放比
- ubuntu16 kickstart pxe 安装系统
- Docker、Mesos和Marathon剖析以及入门实战