您的位置:首页 > 数据库 > Oracle

Oracle查询中行显转列显的方法

2016-08-21 00:00 155 查看
摘要: case when then end oracle

有时候数据库存储的是一行行的数据,而显示的时候我们需要把他转化为一列数据,

比较常见的场景是,学生的考试成绩,员工的工资明细

这些都会存在一个表中,有很多行数据,但是最终展示的时候我们需要合并为一行数据

下面以学生成绩为例

Name Subject Result
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94

试题一 : 通过查询指令输出以下数据
姓名 语文 数学 物理 平均分 总分
李四 74 84 94 84.00 252
张三 74 83 93 83.33 250

-----------------------------------------------------------------------------------------------------------------

创建表:

create table test(
username varchar(12),
kemu varchar(12),
fenshu number(4)
);

向表中制造数据:

select a.*,rowid from test a ;

查询的sql语句如下:

使用case when 语句对每门课进行分类,用人员来分组得到这个人的所有门科,同时可以求出总分和平均分

select username,

max(case kemu when '语文' then fenshu else 0 end) 语文,

max(case kemu when '数学' then fenshu else 0 end) 数学,

max(case kemu when '英语' then fenshu else 0 end) 英语,
sum(fenshu) 总分,

cast(avg(fenshu*1.0) as decimal(18,2))平均分

from test

group by username ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: