首页 > 数据库技术 > 详细

数据库中行转列

时间:2015-11-13 12:54:50      阅读:444      评论:0      收藏:0      [点我收藏+]

关于Oracle中的基本行转列用法,暂时了解的是两个函数:decode和case when函数,用法如下:

首先是表格代码:

技术分享
1 create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int);
2 insert into tb values(张三 , 语文 , 74);
3 insert into tb values(张三 , 数学 , 83);
4 insert into tb values(张三 , 物理 , 93);
5 insert into tb values(李四 , 语文 , 74);
6 insert into tb values(李四 , 数学 , 84);
7 insert into tb values(李四 , 物理 , 94);
创建表格

 1、使用decode函数实现:

技术分享
1 select   姓名 , 
2          max(decode(课程 , 语文,分数)) 语文,       
3          max(decode(课程 , 数学,分数)) 数学,       
4          max(decode(课程 , 物理,分数)) 物理,
5          avg(分数) 平均分,
6          sum(分数) 总分
7 from tb
8 group by 姓名
decode行转列

2、使用case when实现:

技术分享
1 select  姓名,
2         sum(case 课程 when 语文 then 分数 else 0 end) 语文,
3         sum(case 课程 when 数学 then 分数 else 0 end) 数学,
4         sum(case 课程 when 物理 then 分数 else 0 end) 物理,
5         avg(分数) 平均分,
6         sum(分数) 总分
7 from tb
8 group by 姓名
case when行转列

需要注意的是,上面的两种是在Oracle中使用的,如果在sqlserver中实现的话,就只能用case when语句实现,不能用decode函数实现

数据库中行转列

原文:http://www.cnblogs.com/csschn/p/4961660.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!