加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 16:06:05 所属栏目:百科 来源:网络整理
导读:有时候数据库存储的是一行行的数据,而显示的时候我们需要把他转化为一列数据, 比较常见的场景是,学生的考试成绩,员工的工资明细 这些都会存在一个表中,有很多行数据,但是最终展示的时候我们需要合并为一行数据 下面以学生成绩为例 Name Subject Result

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

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

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

下面以学生成绩为例

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 ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读