1.新建一个名为TEST表
2.向TEST表中添加数据
INSERT INTO TEST(STUDENT,COURSE,SCORE)
select '张三','语文',78 from dual union
select '张三','数学',87 from dual union
select '张三','英语',82 from dual union
select '张三','物理',90 from dual union
select '李四','语文',65 from dual union
select '李四','数学',77 from dual union
select '李四','英语',65 from dual union
select '李四','物理',85 from dual
表数据如下:
3.列转行
方法··1:
select
Student,
sum(decode(Course, '数学', Score)) 数学,
sum(decode(Course, '物理', Score)) 物理,
sum(decode(Course, '英语', Score)) 英语,
sum(decode(Course, '语文', Score)) 语文
from
TEST
group by Student
方法··2:
select
Student,
sum(case Course when '数学' then Score else null end) 数学,
sum(case Course when '物理' then Score else null end) 物理,
sum(case Course when '英语' then Score else null end) 英语,
sum(case Course when '语文' then Score else null end) 语文
from
TEST
group by Student
效果如下:
注:sum是求和的意思;比如说里面记录里面有两条张三,列转行显示的结果就会是两个张三的结果之和。
- 大小: 28.1 KB
- 大小: 15.1 KB
分享到:
相关推荐
oracle列转行的方法,有些时候页面显示要通过后台的列转行去实现,我们可以直接从sql中解决后台很复杂的问题
SELECT TRIM(',' FROM SYS.STRAGG(A_NAME||NVL2(A_NAME,',','')))as nams FROM A_TEMP
NULL 博文链接:https://lisanlai.iteye.com/blog/793404
在做系统时,经常会遇到在一个字段中,用逗号或其他符号分隔存储多个信息,例如保存某个用户的一对多权限时,在权限组这个字段中,就会逗号分隔保存多个权限编号。
oracle wm_concat函数,用于列转行,逗号分隔本文将详细介绍此功能的应用
oracle的列转行问题 oracle的列转行问题
主要介绍了Oracle数据表中行转列与列转行的操作方法,这里分静态和动态情况作出了分类讨论,需要的朋友可以参考下
oracle developer 列转行 in的入参转换
Oracle中使用语句将行数据转换称不同的列表示,或者将不同的列数据写到同一列的不同行上的行列转换问题是一个非常传统的话题。 网络上流传了很多将行数据转换称列数据的方法和应用实例,一般通过decode或者case函数...