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. goto语句和标签

    goto 语句用于将执行流更改到标签处,虽然t-sql和pl/sql都提供了该语句,但是作为编程而言,我们不推荐使用此编程技术.要编写一个标签,应当在标识符后面加一个冒号.列如,下面示例使用goto语 ...

  2. Csharp: FreeTextbox 编辑器控件运行时错误: 'FTB_ResizeGalleryArea' 未定义

    ftb.imagegallery.aspx 改一下代码: <form id="Form1" runat="server" enctype="mu ...

  3. 10th week task -3 Arrow function restore

    Arrow function restore 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: function (x) { r ...

  4. mfc自动创建按钮消息处理并清除

        以前参加一次面试有这道题,当时没有网络没有做出来,今天在网上整理了一下,实现如下. .h中增加下面代码     //生成的消息映射函数     virtual BOOL OnInitDialo ...

  5. 利用actionscript访问wfs服务

    以后整理……</> private function search_clickHandler():void{ op="search"; var urlLoader:UR ...

  6. R语言计算相关矩阵然后将计算结果输出到CSV文件

    R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:发布具有同步能力的FeatureService服务

    1.前言 从ArcGIS 10.2.1开始推出离在线一体化技术之后,数据的离在线一体化编辑一直是大家所关注的一个热点.数据存储在企业级地理数据库中,通过ArcGIS桌面软件加载后配图处理,并发布到Ar ...

  8. Dynamics CRM GBK编码

    Dynamics CRM用文本汉字为条件去请求数据时,传过去的竟然是GBK编码⊙_⊙ 下面这段代码解决了我的问题,这是拷贝自网上一位大神的博客: http://qq100002656.blog.163 ...

  9. Linux 配置 ss

    Linux 配置 Shadowsocks 标签(空格分隔): ss VPS 1.首先安装 sudo pip install shadowsocks 2.然后在指定位置新建shadowsocks.jso ...

  10. 创建Spark镜像文件

    创建Spark镜像文件 1.将spark容器提交到新的镜像中 $>docker commit 01a25bdf1499 myrepos:centos-spark 2.将centos-spark镜 ...