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

    本文转自:http://www.cnblogs.com/Mr_JinRui/archive/2011/05/27/2060109.html

  • 相关阅读:
    database design
    django bulk create user
    mysql basic
    install mysql
    django apache httpd windows
    django apache httpd centos
    python mail smtplib
    compile c cpp with cl.exe in vim
    Remote Access to IPython Notebooks via SSH
    calculate traffic by snmpwalk for mrtg
  • 原文地址:https://www.cnblogs.com/dreammyle/p/4369524.html
Copyright © 2011-2022 走看看