Oracle将行转换成列的实现方法

来源:爱站网时间:2019-11-13编辑:网友分享
本文中小编将用实例为大家讲述Oracle将行转换成列的实现方法,相信很多朋友们都是非常感兴趣的,那么接下来的时间里我们就跟爱站小编一起去畅游学习相关的知识吧。

本文中小编将用实例为大家讲述Oracle将行转换成列的实现方法,相信很多朋友们都是非常感兴趣的,那么接下来的时间里我们就跟爱站小编一起去畅游学习相关的知识吧。

把行转成列 把学生表,成绩表,班级表,学科表 合并成一张成绩表效果如下:

创建表

--班级表
create table CLASS
(
 ID    VARCHAR2(5) not null primary key,
 CLASSNAME VARCHAR2(10)
);
--学生表
create table STUDENT
(
 ID   VARCHAR2(10) not null primary key,
 NAME  VARCHAR2(10),
 AGE   NUMBER(3),
 CLASSID VARCHAR2(5)
);
--科目表
create table subject(
id varchar2(10) primary key,
subname varchar2(10)
);
--分数表
 create table score(
 sid varchar2(4),
 subid varchar2(10),
 score number(4,1)
);

查询sql 如下

select s1.name 姓名,
    s1.age 年龄,
    s1.classname 班级,
    score_.sid,
    数学,
    语文,
    物理,
    化学,
    (数学 + 语文 + 物理 + 化学) 总分
 from (select s.sid,
        sum(decode(s.subid, 'SUB001', s.score)) 数学,
        sum(decode(s.subid, 'SUB002', s.score)) 语文,
        sum(decode(s.subid, 'SUB003', s.score)) 物理,
        sum(decode(s.subid,'SUB004',s.score)) 化学
     from score s
     group by s.sid) score_
 right join (select st.id, st.name, st.age, c.classname
        from student st, class c
       where c.id = st.classid) s1 on s1.id = score_.sid
 order by 总分;

这篇文章主要介绍了Oracle将行转换成列的实现方法,在文中具体分析了Oracle创建及查询表的相关操作技巧,大家学会了吗?

上一篇:使用log miner分析oracle日志的方法

下一篇:oracle使用java source调用外部程序

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载