zoukankan      html  css  js  c++  java
  • oracle 列转行

    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是求和的意思;比如说里面记录里面有两条张三,列转行显示的结果就会是两个张三的结果之和。

  • 相关阅读:
    RHEL7挂载ISO做本地yum
    服务器虚拟化架构突出优势
    国内公共DNS
    世界上最小的发行版之一Tiny Core
    VMware v12.1.1 专业版以及永久密钥
    Webbench网站压力测试
    Web.xml配置详解之context-param
    SpringMvc自动代理
    SpringMvc aop before
    SpringMvc 面向切面1
  • 原文地址:https://www.cnblogs.com/Mr_JinRui/p/2060109.html
Copyright © 2011-2022 走看看