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

前端之家收集整理的这篇文章主要介绍了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 ;

猜你在找的Oracle相关文章