----创建测试表
create table student_score(
name varchar2(20),
subject varchar2(20),
score number(4,1)
);
-----插入测试数据
insert into student_score (name,subject,score)values('张三','语文',78);
insert into student_score (name,subject,score)values('张三','数学',88);
insert into student_score (name,subject,score)values('张三','英语',98);
insert into student_score (name,subject,score)values('李四','语文',89);
insert into student_score (name,subject,score)values('李四','数学',76);
insert into student_score (name,subject,score)values('李四','英语',90);
insert into student_score (name,subject,score)values('王五','语文',99);
insert into student_score (name,subject,score)values('王五','数学',66);
insert into student_score (name,subject,score)values('王五','英语',91);
-----decode行转列
select name "姓名",
sum(decode(subject, '语文', nvl(score, 0), 0)) "语文",
sum(decode(subject, '数学', nvl(score, 0), 0)) "数学",
sum(decode(subject, '英语', nvl(score, 0), 0)) "英语"
from student_score
group by name;
------ case when 行转列
select name "姓名",
sum(case when subject='语文'
then nvl(score,0)
else 0
end) "语文",
sum(case when subject='数学'
then nvl(score,0)
else 0
end) "数学",
sum(case when subject='英语'
then nvl(score,0)
else 0
end) "英语"
from student_score
group by name;
oracle 行转列 decode
原创
©著作权归作者所有:来自51CTO博客作者he2375813的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:2.监听问题—基础
下一篇:Oracle关闭和开启归档日志
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Oracle 行转列的坑
在使用Oracle的时候,有个需求需要将统计的数量关联别的表格联查出来,就想到了用行转列,搜了很多种方法
Oracle 列转行 10g decode函数 数据库 -
oracle WM_CONCAT行转列
T 20 SMITH 30 ALLEN 30 BLAKE 30 JAMES 30 MARTIN 30 TURNER 30
oracle WM_CONCAT bc SQL 平台架构 -
Oracle 行转列小结
近期在工作中。对行转列进行了应用,在此做一个简单的小结。 转换步骤例如以下: 1、创建表结构 CREATE TABLE RowToCol
行转列 多列 字符串转换 字符串 创建表