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 ;

相关文章

文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符...
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远...
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语...
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseErr...
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Or...
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点...