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

  • 相关阅读:
    【学习篇】JavaScript可折叠区域
    hdu 2201 (简单数学概率)
    hdu 2552 (这题很强大)
    hdu 2212 (简单数学)
    hdu 2124 (赤裸裸的贪心)
    hdu 2570 (贪心)
    hdu 2401 (简单数学)
    hdu 2537(水)
    hdu4432
    hdu 1181 (搜索BFS,深搜DFS,并查集)
  • 原文地址:https://www.cnblogs.com/Mr_JinRui/p/2060109.html
Copyright © 2011-2022 走看看