时间:2023-10-31来源:系统城装机大师作者:佚名
1 decode(expression,value,result1,result2)
如果expression=value,则输出result1,否则输出result2
例子:
(1+2=3,输出a)
(1+2≠4,输出b)
2 decode(expression,value1,result1,value2,result2,value3,result3......,default)
如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3,
若expression不等于所列出的所有value,则输出为default
例子:
(score=100,输出'NO.1',score='90',输出‘NO.2’,score='70',输出‘NO.3’,其他值输出'Other')
1 使用decode函数分段
将成绩表中分数大于90分的分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,60分以下为不及格。
(sign()函数的作用是,判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1;
如图,当socre大于或等于90时,socre-90>=0,sign()函数返回1或0,则输出‘优秀’,
在score-90<0的情况下,再判断socre-80,socre-80>=0,sign()函数返回1或0,则输出‘良好’,
以此类推,用decode()的嵌套配合sign()函数来实现对分数的分段以及相应的输出,
最后60分以下的就default为‘不及格’就可以了,可以看到我们的Tony老师的分数就不及格了)
2 使用decode函数对表做行列转换
如图所示,有一张三个科目的成绩表,各科目名称和相应的分数呈现在行中,
现想将各科目名称转换为列名,每列的内容为对应科目的分数。
如图,先用decode函数判断subject为Chinese时,输出score,不为Chinese时,输出为NULL,
因为共有三个科目,所以输出其中一个科目的分数时,其他科目的分数为NULL,这里只需要
用sum()函数来实现聚合的作用,将空值去除掉就可以了)
sum()函数分别将name为John的每个列的值相加,如Chinese列,80+NULL+NULL=80,再将name为Will的每个列的值相加,然后group by将name分组,最终达到如上图聚合的效果)
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31