创建了一张成绩表,如下图所示:

  在oracle中,这两个函数我们都可以使用,代码及结果如下:

  decode用法:

    select Name,decode(Subject,'语文',1,'数学',2,'英语',3) 科目代码 from results;

    select Name,decode(Subject,'语文',1,'数学',2,3) 科目代码 from Results;

  

  case用法:

select name,
       case 
          when Subject='语文' then 1
          when Subject='数学' then 2
          when Subject='英语' then 3  --else 3
       end  as 科目代码
  from Results;

  这两种方法均能达到同样的结果:

  同样的,我们可以使用这两个函数实现行转列,代码及结果如下:

  decode:

select 
   Name,
   sum(decode(Subject,'语文',Result,0)) 语文,
   sum(decode(Subject,'数学',Result,0)) 数学,
   sum(decode(Subject,'英语',Result,0)) 英语
from Results
group by Name;

  case:

select 
   Name,
   sum((case when Subject='语文' then Result else 0 end)) 语文,
   sum((case when Subject='数学' then Result else 0 end)) 数学,
   sum((case when Subject='英语' then Result else 0 end)) 英语
from Results
group by Name;

case和decode的用法(行转列)的更多相关文章

  1. SQL基本用法-行转列

    /* SELECT <非透视的列>, [第一个透视的列] AS <列名称>, [第二个透视的列] AS <列名称>, ... [最后一个透视的列] AS <列 ...

  2. decode行转列,case when,

    1.行转列 转之前:

  3. oracle 使用 decode函数 或 case when 实现行转列

    ----创建测试表 create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); ...

  4. 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点

    异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, ...

  5. 行转列:SQL SERVER PIVOT与用法解释

    在数据库操作中,有些时候我们遇到需要实现“行转列”的需求,例如一下的表为某店铺的一周收入情况表: WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL) 我们先插入一 ...

  6. SQL行转列:decode函数

    前言 开发中我们经常会用到行转列,这里记录一下我在项目中实现行转列的思路.需求:报表模块,统计某机房机架的不同状态(1 空闲  2 预占  3 占用)的数量(真实需求更为复杂,这里只是讨论技术,简化一 ...

  7. unpivot,pivot,case when ,行转列,列转行 sql server

    http://technet.microsoft.com/zh-cn/library/ms177410.aspx unpivot : CREATE TABLE pvt (VendorID int, E ...

  8. sql pivot(行转列) 和unpivot(列转行)的用法

    1.PIVOT用法(行转列) select * from Table_Score as a pivot (sum(score) for a.name in ([语文],[数学],[外语],[文综],[ ...

  9. oracle行转列函数WMSYS.WM_CONCAT 用法

    1.通过 10g 所提供的 WMSYS.WM_CONCAT 函数即可以完成 行转列的效果 select group_code, wm_concat(display_title) from DR_OPM ...

随机推荐

  1. Linux下python多版本多环境介绍

     一.python多版本配置说明 安装python相关依赖 [root@centos6 ~]# yum install -y gcc make patch gdbm-devel openssl-dev ...

  2. tkinter + cefpython 仿美团桌面程序

    使用js开发桌面程序目前是一个趋势,Electron是其中一个佼佼者,网上也不乏很多文章.今天主要是来讲一下cefpython. 用python的朋友,特别使用过tkinter开发过界面的,一定会觉得 ...

  3. 全网唯一的纯前端实现的canvas支持多图压缩并打包下载的工具

    技术栈: canvas jszip.js(网页端压缩解压缩插件JSZIP库) FileSaver.js(文件保存到本地库) 直接解读源码: <div class="cont" ...

  4. git push 时:报missing Change-Id in commit message footer的错误

    1. 一般而言,按照提示执行以下两个命令即可生成新的Change-id - gitdir=$(git rev-parse --git-dir); scp -p -P 29418 guan@192.16 ...

  5. JAVA复习笔记02

    16.interface中的成员变量默认为public static final类型,方法只能是public(默认为public) 17.内部类访问外部类成员: Outer.this.num; 18. ...

  6. Spring中AOP相关源码解析

    前言 在Spring中AOP是我们使用的非常频繁的一个特性.通过AOP我们可以补足一些面向对象编程中不足或难以实现的部分. AOP 前置理论 首先在学习源码之前我们需要了解关于AOP的相关概念如切点切 ...

  7. usb口打印机的指令打印和驱动打印

    打印机简介:是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上. 打印机类型:激光打印机.喷墨打印机.针式打印机.热敏打印机等. 计算机和打印机之间的连接方式:usb口.串口.并口.网口.蓝 ...

  8. Spring Boot2(七):拦截器和过滤器

    一.前言 过滤器和拦截器两者都具有AOP的切面思想,关于aop切面,可以看上一篇文章.过滤器filter和拦截器interceptor都属于面向切面编程的具体实现. 二.过滤器 过滤器工作原理 从上图 ...

  9. json数据转为对象,一般在前台把数据传回后端中使用 转https://www.cnblogs.com/zxtceq/p/6610214.html

    public static JArray GetData2JArray(string url, string key) { string jsonData = HttpHelper.HttpGet(u ...

  10. ZOJ 3962:Seven Segment Display(思维)

    https://vjudge.net/problem/ZOJ-3962 题意:有16种灯,每种灯的花费是灯管数目,代表0~F(十六进制),现在从x开始跳n-1秒,每一秒需要的花费是表示当前的数的花费之 ...