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

异同点
  • 都可以对表行转列;
  • DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断
  • 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, EXISTS等等(也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。)
DECODE方法 (Oracle公司独家)

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

--该函数的含义如下:    
IF    条件=值1 THEN RETURN(翻译值1)   
ELSIF 条件=值2 THEN RETURN(翻译值2)  ......  
ELSIF 条件=值n THEN RETURN(翻译值n)  
ELSE  RETURN(缺省值)  
END IF   
--行转列
SELECT name, SUM(DECODE(Subject, '数学', Score, 0)) 数学, SUM(DECODE(Subject, '语文', Score, 0)) 语文, SUM(DECODE(Subject, '英语', Score, 0)) 英语 FROM Scores GROUP BY name 
CASE WHEN
SELECT name,
SUM( CASE WHEN Subject='数学' THEN Score ELSE 0 END) 数学, SUM( CASE WHEN Subject='语文' THEN Score ELSE 0 END) 语文, SUM( CASE WHEN Subject='英语' THEN Score ELSE 0 END) 英语 FROM Scores group by name;

Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略,Else部分的默认值是NULL

Case具有两种格式,简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式

在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, EXISTS等等(也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。)

--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END--Case搜索函数 
CASE 
WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END --根据条件有选择的UPDATE。 UPDATE Scores SET grade = CASE WHEN score >= 85 THEN '优秀' WHEN score >= 70 AND score < 85 THEN '良好' WHEN score >= 60 AND score < 70 THEN '及格' ELSE '不及格' END; --在Case函数中使用聚合函数:COUNT, SUM, AVG, MAX, MIN SELECT name, CASE WHEN COUNT(*) = 1 THEN MAX(subject) ELSE MAX(CASE WHEN major = 'Y' THEN subject ELSE NULL END) END AS major_subject FROM Scores GROUP BY name; 
Scores表结构和实现如下

image
image

转载于:https://www.cnblogs.com/niudaxianren/p/10018715.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[pytorch、学习] - 4.4 自定义层

参考 4.4 自定义层 深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节将要用介绍的卷积层、池化层与循环层。虽然PyTorch提供了大量常用的层,但有时候我们依然希望自定义层。本节将介绍如何使用Module来自定义层,从而可以被重复调用。 4.4.1 不含模型参…

树的存储

父亲表示法 顾名思义&#xff0c;就是只记录每个结点的父结点。 int n; int p[MAX_N]; // 指向每个结点的父结点 孩子表示法 如上&#xff0c;就是只记录每个结点的子结点。 int n; int cnt[MAX_N]; // 记录每个结点的子结点的数量 int p[MAX_N][MAX_CNT]; // 指向每个结点的子…

spring-boot注解详解(四)

repository repository跟Service,Compent,Controller这4种注解是没什么本质区别,都是声明作用,取不同的名字只是为了更好区分各自的功能.下图更多的作用是mapper注册到类似于以前mybatis.xml中的mappers里. 也是因为接口没办法在spring.xml中用bean的方式来配置实现类吧(接口…

令人叫绝的EXCEL函数功能

http://club.excelhome.net/thread-166725-1-1.html https://wenku.baidu.com/view/db319da0bb0d4a7302768e9951e79b8969026864.html转载于:https://www.cnblogs.com/cqufengchao/articles/9150401.html

[pytorch、学习] - 4.5 读取和存储

参考 4.5 读取和存储 到目前为止,我们介绍了如何处理数据以及如何构建、训练和测试深度学习模型。然而在实际中,我们有时需要把训练好的模型部署到很多不同的设备。在这种情况下,我们可以把内存中训练好的模型参数存储在硬盘上供后续读取使用。 4.5.1 读写tensor 我们可以直…

JAVA排序的方法

//冒泡排序法&#xff1a; package fuxi;public class Bubble { public static void main(String[] args) { int a[] { 10,23,11,56,45,26,59,28,84,79 }; int i,temp; System.out.println("输出原始数组数据&#xff1a;"); for (i…

spring-boot注解详解(五)

AutoWired 首先要知道另一个东西&#xff0c;default-autowire&#xff0c;它是在xml文件中进行配置的&#xff0c;可以设置为byName、byType、constructor和autodetect&#xff1b;比如byName&#xff0c;不用显式的在bean中写出依赖的对象&#xff0c;它会自动的匹配其它bea…

什么是p12证书?ios p12证书怎么获取?

.cer是苹果的默认证书&#xff0c;在xcode开发打包可以使用&#xff0c;如果在lbuilder、phonegap、HBuilder、AppCan、APICloud这些跨平台开发工具打包&#xff0c;就需要用到p12文件。 .cer证书仅包含公钥&#xff0c;.p12证书可能既包含公钥也包含私钥&#xff0c;这就是他们…

[pytorch、学习] - 4.6 GPU计算

参考 4.6 GPU计算 到目前为止,我们一直使用CPU进行计算。对复杂的神经网络和大规模数据来说,使用CPU来计算可能不够高效。 在本节中,将要介绍如何使用单块NIVIDA GPU进行计算 4.6.1 计算设备 PyTorch可以指定用来存储和计算的设备,如果用内存的CPU或者显存的GPU。默认情况下…

adb connect 192.168.1.10 failed to connect to 192.168.1.10:5555

adb connect 192.168.1.10 输出 failed to connect to 192.168.1.10:5555 关闭安卓端Wi-Fi&#xff0c;重新打开连接即可 转载于:https://www.cnblogs.com/sea-stream/p/10020995.html

创建oracle数据库表空间并分配用户

我们在本地的oracle上或者virtualbox的oracle上 创建新的数据库表空间操作&#xff1a;通过system账号来创建并授权/*--创建表空间create tablespace YUJKDATAdatafile c:\yujkdata200.dbf --指定表空间对应的datafile文件的具体的路径size 100mautoextend onnext 10m*/ /*--创…

spring-boot注解详解(六)

Target Target说明了Annotation所修饰的对象范围&#xff1a;Annotation可被用于 packages、types&#xff08;类、接口、枚举、Annotation类型&#xff09;、类型成员&#xff08;方法、构造方法、成员变量、枚举值&#xff09;、方法参数和本地变量&#xff08;如循环变量、…

[pytorch、学习] - 5.1 二维卷积层

参考 5.1 二维卷积层 卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络。本章介绍的卷积神经网络均使用最常见的二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。本节中,我们将介绍简单形式的二维卷积层的工作原理。 5.1.1…

[51CTO]给您介绍Windows10各大版本之间区别

给您介绍Windows10各大版本之间区别 随着win10的不断普及和推广&#xff0c;越来越多的朋友想安装win10系统了&#xff0c;但是很多朋友不知道win10哪个版本好用&#xff0c;为了让大家能够更好的选择win10系统版本&#xff0c;下面小编就来告诉你 http://os.51cto.com/art/201…

iOS中NSString转换成HEX(十六进制)-NSData转换成int

NSString *str "0xff055008"; //先以16为参数告诉strtoul字符串参数表示16进制数字&#xff0c;然后使用0x%X转为数字类型 unsigned long red strtoul([str UTF8String],0,16); //strtoul如果传入的字符开头是“0x”,那么第三个参数是0&#xff0c;也是会转为十…

spring-boot注解详解(七)

Configuration 从Spring3.0&#xff0c;Configuration用于定义配置类&#xff0c;可替换xml配置文件&#xff0c;被注解的类内部包含有一个或多个被Bean注解的方法&#xff0c;这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行…

[pytorch、学习] - 5.2 填充和步幅

参考 5.2 填充和步幅 5.2.1 填充 填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)。图5.2里我们在原输入高和宽的两侧分别添加了值为0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。图5.2中的阴影部分为第一个输出元素及其计算所使用的输入和核数…

java实现Comparable接口和Comparator接口,并重写compareTo方法和compare方法

原文地址https://segmentfault.com/a/1190000005738975 实体类:java.lang.Comparable(接口) comareTo(重写方法)&#xff0c;业务排序类 java.util.Comparator(接口) compare(重写方法). 这两个接口我们非常的熟悉&#xff0c;但是 在用的时候会有一些不知道怎么下手的感觉&a…

hdu 4714 树+DFS

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4714 本来想直接求树的直径&#xff0c;再得出答案&#xff0c;后来发现是错的。 思路&#xff1a;任选一个点进行DFS&#xff0c;对于一棵以点u为根节点的子树来说&#xff0c;如果它的分支数大于1&#xff0c…

springboot----shiro集成

springboot中集成shiro相对简单&#xff0c;只需要两个类&#xff1a;一个是shiroConfig类&#xff0c;一个是CustonRealm类。 ShiroConfig类&#xff1a; 顾名思义就是对shiro的一些配置&#xff0c;相对于之前的xml配置。包括&#xff1a;过滤的文件和权限&#xff0c;密码加…