1.新建一个名为TEST表

create table TEST(
STUDENT varchar2(20),
COURSE varchar2(20),
SCORE number
);

INSERT INTO TEST(STUDENT,COURSE,SCORE) values( '张三','语文',78);
INSERT INTO TEST(STUDENT,COURSE,SCORE) values ('张三','数学',87 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values ('张三','英语',82 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values ('张三','物理',90 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values( '李四','语文',65 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values( '李四','数学',77 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values ('李四','英语',65 );
INSERT INTO TEST(STUDENT,COURSE,SCORE) values( '李四','物理',85 );
commit;

表数据如下:

3.列转行

方法··1:

select
Student,
decode(Course, '数学', Score) 数学,
decode(Course, '物理', Score) 物理,
decode(Course, '英语', Score) 英语,
decode(Course, '语文', Score) 语文
from TEST;

group by分组 后,可以用sum(),max(),min(),avg()等。

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

 

4.case when 嵌套case when 。

5.case when then else end  的几种用法。

1、简单的case when语句:

case sex when ’1' then '男' when ’2’ then '女’else ’其他’ end

2、复杂的case when语句:

case when month in (01,02,03) then '第一季度' when month in (04,05,06) then '第二季度' when month in (07,08,09) then '第三季度' when month  in (10,11,12) then ‘第四季度’ end

值得注意的是,语句只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
3.  case sex when  months between 444 and 1111  then 'XX' when months between 2222 and 9650 then 'XX’else ’其他’ end

4.select student,course, case when score >= 90 then '优秀'when score >=60 and score <90 then '良好'  else '不及格' end as "成绩" from system.test ;

5.case when 与decode的差别就是 ,decode 就是 取等于的值 ,case when 还可以去区间范围的值。

来自:https://blog.csdn.net/rlhua/article/details/24668755

Oracle 行转列两种方法的更多相关文章

  1. 移动oracle数据文件的两种方法

    1.alter database方法该方法,可以移动任何表空间的数据文件. ***关闭数据库***SQL> shutdown immediateDatabase closed.Database ...

  2. Sql将一列数据拆分为多行显示的两种方法

    原始数据与期望结果有表tb, 如下:id          value----------- -----------1           aa,bb2           aaa,bbb,ccc欲按 ...

  3. RAC时间同步的两种方法

    集群时间同步服务在集群中的两个 Oracle RAC 节点上执行以下集群时间同步服务配置.Oracle Clusterware 11g 第 2 版及更高版本要求在部署了 Oracle RAC 的集群的 ...

  4. 【转】oracle 中随机取一条记录的两种方法

    oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COU ...

  5. Python 使用 xlwings 往 excel中写入一列数据的两种方法

    1.准备一个二维列表,然后再range后面不指定任何选项,可以输出该二维列表中数据在一列中显示,如下代码: # -*- coding:utf-8 -*- import xlwings as xw li ...

  6. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...

  7. PyQt(Python+Qt)学习随笔:QTableWidget中表格各列平均分配宽度的两种方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget表格部件中,如果需要实现表格中各列要占满部件中的可用空间,同时实现各列平分 ...

  8. oracle rename数据文件的两种方法

    oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报  分类: oracle(98)  版权声明:本文为博主原创文章,未经博主允许不 ...

  9. CSS多行文字垂直居中的两种方法

    之前写过一篇关于:CSS左右居中对齐的文章,里面提到的两种方法其实也可以引申为垂直居中对齐.写这篇文章是因为要兼容IE6.IE7的问题,我们都知道一行文字时可以通过line-height来设置垂直居中 ...

随机推荐

  1. JS常用的设计模式(2)——简单工厂模式

    简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...

  2. [转]什么?你还不会写JQuery 插件

    本文转自:http://www.cnblogs.com/joey0210/p/3408349.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jque ...

  3. sql 全局查询

    select * from sysobjects o ,syscomments c where o.id=c.id and text like '%ST_Status%'

  4. C#简单实现读取txt文本文件并分页存储到数组

    最近做一个VR项目,需要把某个中草药的介绍信息分页显示到unity场景里然后用VR手柄切换信息. unity的脚本是c#,就先在本地写了个代码测试了一下,利用控制台测试输出,到时候拷贝函数过去再结合交 ...

  5. 设置cssrem,设置emmet

    1.文件->首选项->设置 2.搜索cssrem-> 点击设置:"cssrem.rootFontSize": 16, 4.emmet

  6. 如何在web.config文件中配置Session变量的生命周期

    实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...

  7. ubuntu GITLAB完全导入SVN(提交历史,用户)项目

    从SVN导入到GITLAB目前没有直接的方案,通常需要通过GIT转换:SVN –>GIT –>GITLAB.通过这种方式,将SVN的提交历史,用户信息一并导入到gitlab 注:本文只适用 ...

  8. 如何将bug杀死在摇篮里?

    阿里妹导读:在欧洲中世纪的传说中,有一种叫“人狼”的妖怪,就是人面狼身.它们会讲人话,专在月圆之夜去袭击人类.而且传说中对“人狼”用一般的枪弹是不起作用的,普通子弹都伤不到也打不死它,只有一种用银子作 ...

  9. c#中 定时器周期执行某事件 以及,重置 定时器重新计时的方法

    static void Main(string[] args) { System.Timers.Timer timer = new System.Timers.Timer(); timer.Enabl ...

  10. Winform中 DataGridView控件中的 CheckBox 的值读出来 始终 为 False ,已解决

    private void DGV_DetailsViewer_CellContentClick(object sender, DataGridViewCellEventArgs e) { )) { D ...