DECODE函数使用

DECODE函数使用DECODE函数,是ORACLE公司的SQL软件ORACLEPL/SQL所提供的特有函数计算方式,DECODE函数是ORACLEPL/SQL的功能强大的函数之一,了解使用DECODE函数很有必要。1DECODE中的if-then-else逻辑在逻辑编程中,经常用到If–Then–Else进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:  DECOD…

大家好,又见面了,我是你们的朋友全栈君。

DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,DECODE函数是ORACLE PL/SQL的功能强大的函数之一,了解使用DECODE函数很有必要。

1 DECODE 中的if-then-else逻辑

在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
  DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
  Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
  需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

2 DECODE实现表的转置,这里主要介绍这个作用。

数据库中的表是由列和行构成的一个二维表。一般列在任何数据库中都是有限的数量,而行的变化较大,如果表很大,行的数量可能大上千万行。同一列的不同行可能有不同的值。
例如表A,结构式

FYEAR  VARCHAR2(50) 年份
FSCORE VARCHAR2(50) 分数
RNUMBER NUMBER  分数对应级别

数据如下:

2010  75 3

2010 95 4

2010 50 5

2010 5 6

2009 5 2

2010 25 1

2008 5 19

2008 25 16

2008 50 14

2008 75 11

2008 95 7

现需要查出每一年的级别数,如下图:
分数    年份  5%  25% 50% 75% 95%
级别 2010
2009
一般sql不好实现,原因数据库表存的是纵表,而页面显示的要求是横表,要求不能更改表结构。
因此使用decode函数
用decode()方法改写sql:
select m.f_year,
                             nvl(max(decode(m.fscore, ‘5’, m.fnumber)),0) f5,
                             nvl(max(decode(m.fscore, ’25’, m.fnumber)),0) f25,
                             nvl(max(decode(m.fscore, ’50’, m.fnumber)),0) f50,
                             nvl(max(decode(m.fscore, ’75’, m.fnumber)),0) f75,
                             nvl(max(decode(m.fscore, ’95’, m.fnumber)),0) f95
                        from A m
                       where 1 = 1
                       group by m.f_year
输出结果:
F_YEAR  F5     F25 F50 F75 F95
2008     19      16 14 11 7
2009      2   0 0 0 0
2010      6 1 5 3 4

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160118.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 小米骁龙855_小米商城抢购秒杀软件

    小米骁龙855_小米商城抢购秒杀软件每日的科技盘点,用一篇文章给你带来今天的大小科技事。今天的热点消息层出不穷,随我一起来了解一下吧。【小米11将在12月29日发布】《科创板日报》以及外媒GizmoChina在昨日表示,小米下一代旗舰手机小米11将于12月29日发布。此前各大博主也都表示小米11将在本月发售,这对于一款旗舰手机来说还是比较奇特的。从外观图片来看,小米11采用了蓝色渐变色后盖,后置摄像头布局为方形设计,带…

    2022年10月24日
  • WebStorm安装教程【2022年新版图解】

    WebStorm安装教程【2022年新版图解】对于入门JavaScript开发的者,最重要的就是安装WebStorm软件,一款非常优秀的JavaScript工具,在互联网上查询目前还没有一篇写得比较详细的WebStorm教程。今天我将使用WebStorm最新2022年版本,从下载到安装以及创建项目带大家完整的走一遍;一、WebStorm下载1、百度搜索查询WebStorm官网;认准官网网址,别在下载站下载可能会捆绑很多垃圾软件;2、打开WebStorm官网主介绍页面,点击“Download”进入下载页面;3、点击“Download”后就跳

  • Gradle教程和指南 – 创建Gradle构建

    Gradle教程和指南 – 创建Gradle构建原文地址:CreatingNewGradleBuilds遵循本指南,你将创建一个Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。需要什么大约11分钟终端或者IDE应用程序JDK1.7及以上Gradle4.6及以上Shell命令将基于Unix的系统使用。在Windows中,每个命令都有类似的命令。初始化项…

  • finalize方法的使用[通俗易懂]

    finalize方法的使用[通俗易懂]《JAVA编程思想》:Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。         (1).对象不一定会被回收。      (2).垃圾回收不是析构函数。      (3).垃圾回收只与内存有关。      (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。有时当撤消…

  • **牛客网–子串计算

    **牛客网–子串计算

  • 【Java面试】第一章:P5级面试

    HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号