这篇博文写的是简单的行列转换的,以一个具体的例子来给出。

  以前在论坛上有人问过相关的问题,上面的回答五光十色,有很多是可行的,当然更多的是自以为很高端,实际却不着边际的回答。下面进入正题。

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 实现行列转换相关推荐

  1. SQL语句行列转换两种方法 case ...when 和pivot函数应用

    2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...

  2. SQL Server 行列转换(1)

    参考前一个SQL的行列转换例子http://www.cnblogs.com/insus/articles/1969896.html ,觉得不够自由,需要去预先知道记录的内容去定义行或列. 下面这个方法 ...

  3. 一些sql 语句(行列转换等)

    1. 行列转换--普通 假设有张学生成绩表(CJ)如下 Name Subject Result 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 8 ...

  4. oracle转换指定类型,PL/SQL 类型格式转换

    PL/SQL 类型格式转换 更新时间:2007年03月21日 00:00:00   作者: TO_NUMBER(char[,'format_model'])  字符转换到数字类型 TO_DATE(ch ...

  5. [转载]SQL Server行列转换实现

    一.Pivot和UnPivot介绍 1.Pivot介绍 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVO ...

  6. SQL Server 行列转换(2)

    参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果: 参考代码: View Code ...

  7. mysql行列转换case_浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用_MySQL...

    bitsCN.com /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT ...

  8. mysql pivot函数怎么用_浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用...

    /*创建数据库*/ CREATE DATABASE tmp go USE tmp go /*创建数据库测试表*/ CREATE TABLE [Scores] ( [ID] INT IDENTITY(1 ...

  9. SQL SERVER 行列转换(1)——聚合函数静态转换

    在实际开发中,有时候需要对数据表进行行列转换,转换之后再显示对应的数据,行列转换的方法比较多,本次介绍静态的利用聚合函数来实现,行转列测试数据: --测试数据 if not object_id(N'T ...

最新文章

  1. Linux 之 Kickstart
  2. 非法关机 mysql_一次非法关机造成mysql数据表损坏的例子
  3. mui 打开openWindow新页面不读取缓存的设置/mui中h5清除缓存页面的办法
  4. Asynchronous Processing Basics || Use Future Methods
  5. 浅谈文献总结(2018.9.28)——坚恒勇毅论文课笔记
  6. Vijos P1067Warcraft III 守望者的烦恼
  7. suse linux10 关闭防火墙,Suse10 关闭防火墙
  8. webpack-plugin-webpack.DefinePlugin-应用全局变量,svn-rep-browser
  9. ffmpeg推送摄像头rtmp流
  10. atomikos   log already in use
  11. python 魔法方法常用_Python 常用魔法方法(下)
  12. 六一儿童节特辑|哪部“奥特曼”才是90后的心中最爱??数据分析师来告诉你...
  13. [2019杭电多校第四场][hdu6623]Minimal Power of Prime
  14. 基于排队论模型的收银台服务系统的分析及可视化设计
  15. 抖音的服务器究竟有多大
  16. Win11声卡驱动怎么更新?Win11声卡驱动更新方法
  17. gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
  18. AD20 输出制板文件小记
  19. STM32使用模拟I2C读取硒翔30mL流量传感器
  20. 基于jsp的教师科研工作量_高校教师科研工作量考核与管理暂行办法

热门文章

  1. Ubuntu有了第一个全球CDN更新源
  2. ubuntu git cntlm 代理 不能下载
  3. L1-073 人与神 (5 分)-PAT 团体程序设计天梯赛 GPLT
  4. LeetCode 22. Generate Parentheses
  5. 并发程序设计模式之Future模式
  6. 【Objective-C】java中的interface与Objective-C中的interface的区别
  7. 蓝桥杯 ADV-165算法提高 超级玛丽(动态规划、递推)
  8. 如何修改firefox的默认缩放比
  9. ubuntu16 kickstart pxe 安装系统
  10. Docker、Mesos和Marathon剖析以及入门实战