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 ;
有时候数据库存储的是一行行的数据,而显示的时候我们需要把他转化为一列数据,
比较常见的场景是,学生的考试成绩,员工的工资明细
这些都会存在一个表中,有很多行数据,但是最终展示的时候我们需要合并为一行数据
下面以学生成绩为例
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中的几种TOP-N查询方法
- oracle 中查询被锁的对象,并杀死死锁进程的方法
- ORACLE跨数据库查询的方法
- [转]树结构表递归查询在ORACLE和MSSQL中的实现方法
- oracle对select加锁方法、锁的查询
- ORACLE中 大数据表的交叉数据集的查询 SQL优化方法
- ORACLE跨数据库查询的方法[转自 huzhenwei的专栏]
- Oracle9查询语句报无法访问oracore9.dll错误的解决方法
- Oracle查询某个字段的第一个字为汉字的查询方法
- 用Oracle8的层次查询生成BOM树的实现方法
- oracle中查询第m行到第n行的方法
- Sql 2000 中行转列的查询方法
- oracle中用sql查询被锁的表与解锁方法
- Oracle查询某个字段的第一个字为汉字的查询方法
- ORACLE用户常用数据字典的查询使用方法
- Oracle的日志缓冲区大小查询方法———学习笔记
- 一个可以加快Oracle查询语句性能的可能方法
- java oracle 日期时间模糊查询的方法
- 关于oracle中无法查询中文条件的解决方法
- oracle 多表查询的一种优化方法