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

  • 相关阅读:
    python操作elasticsearch
    php源码的编译
    linux 访问windows 共享文件
    list容器排除重复单词的程序
    求组合数m_n
    简单堆排序
    快速排序
    判断点在直线左侧或者右侧
    求取点到直线的距离
    求给定三个点的夹角
  • 原文地址:https://www.cnblogs.com/dreammyle/p/4369524.html
Copyright © 2011-2022 走看看