博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle行列转换
阅读量:7186 次
发布时间:2019-06-29

本文共 1955 字,大约阅读时间需要 6 分钟。

在oracle中通常会遇到这样的问题,需要将行转换成列,如图:

    

 

  

一般通常用的函数有以下三种:

 decode:

 case when:

 pivot:

--oracle 实现行转列  --创建测试表  CREATE TABLE student_score(  name varchar2(20),  subject varchar2(20),  score number(4,1)  );  --插入测试数据  INSERT INTO student_score (name,subject,score) values('张三','语文',89);  INSERT INTO student_score (name,subject,score) values('张三','数学',79);  INSERT INTO student_score (name,subject,score) values('张三','英语',91);  INSERT INTO student_score (name,subject,score) values('李四','语文',90);  INSERT INTO student_score (name,subject,score) values('李四','数学',99);  INSERT INTO student_score (name,subject,score) values('李四','英语',59);  INSERT INTO student_score (name,subject,score) values('王五','语文',79);  INSERT INTO student_score (name,subject,score) values('王五','数学',100);  INSERT INTO student_score (name,subject,score) values('王五','英语',80);  INSERT INTO student_score (name,subject,score) values('赵六','语文',86);  INSERT INTO student_score (name,subject,score) values('赵六','数学',88);  INSERT INTO student_score (name,subject,score) values('赵六','英语',89); --decode 实现行转列 select name as "姓名" ,   sum(decode(subject,'语文',nvl(score,0),0)) as "语文" ,   sum(decode(subject,'数学',nvl(score,0),0)) as "数学",   sum(decode(subject,'英语',nvl(score,0),0)) as "英语"    from student_score     group by name;        --case when 行转列  select name as "姓名",         sum(case when subject='语文'             then nvl(score,0)              else 0              end ) as "语文",         sum(case when subject='数学'             then nvl(score,0)              else 0              end )as "数学",          sum(case when subject='英语'             then nvl(score,0)              else 0              end )as "英语"         from student_score          group by name;   --pivot 实现行转列   select * from (select name,subject,score from student_score group by name,subject,score)    pivot(       sum(score) for subject in('语文'as "语文",'数学' as "数学",'英语' as "英语")    );

 

转载于:https://www.cnblogs.com/Jims2016/p/5526183.html

你可能感兴趣的文章
Oracle学习操作(5)触发器
查看>>
vim编辑器和bash算术运算入门
查看>>
守护线程(Daemon Thread)
查看>>
在商城系统开发时遇到商品的多级分类,为增强扩展性,子类可以任意添加,此类问题数据库如何设计...
查看>>
我在csdn有一个新家啦
查看>>
LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
查看>>
【Python学习笔记】-冒泡排序、插入排序、二分法查找
查看>>
linux进程管理之进程创建(三)
查看>>
DS第五章学习小结
查看>>
java基础---面向对象
查看>>
51nod - 1022【四边形不等式优化DP】
查看>>
3月3日(6) Climbing Stairs
查看>>
STL学习笔记-- list
查看>>
Unity 2D人物运动不协调的检查方法(本人专用)
查看>>
oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
查看>>
textview第一次出现不可滚动文本,但是点击出现键盘,键盘落下,就可以滚动问题...
查看>>
【MPI学习5】MPI并行程序设计模式:组通信MPI程序设计
查看>>
skynet对Windows环境支持的版本:Windows版skynet
查看>>
Android小感悟-重写textview组件感悟
查看>>
bnu Game 博弈。
查看>>