需求

对某时间指标做分类,如果工单未完成(结束时间为空),则为“未结单”;否则,若工单超时,则为“未达标”;其余则为“达标”。

可见,指标结果分为3类:
未结单=COMPLETE_TIME IS NULL
达标=COMPLETE_TIME IS NOT NULL AND COMPLETE_TIME<=PLAN_FINISHED_TIME
未达标=COMPLETE_TIME IS NOT NULL AND COMPLETE_TIME>PLAN_FINISHED_TIME

数据

方法

首先,利用NVL2()函数,判断COMPLETE_TIME是否为空,为空则'未结单';

然后,利用DECODE()函数和SIGN()函数,判断差值是否大于0,大于0则为'未达标',否则为'达标'。

其中

  • NVL2(表达式1,表达式2,表达式3)

3目表达式,如果'表达式1'为空,则返回'表达式3'的值;如果'表达式1'不为空,则返回'表达式2'的值。注意顺序与NVL()的区别。

  • DECODE(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

多目表达式,此处只用到一种判断值,即DECODE(表达式,值,返回值,缺省值)。

如果,'表达式'等于'值',则返回'返回值',否则返回'缺省值'。

但是,DECODE只能判断是否相等,无法比较大小,可以与SIGN函数组合,实现比较大小的目的。

  • SIGN(value)

SIGN(value)函数会根据value的值为0,正数,负数,分别返回0,1,-1

综上可见,通过sign对需要比较大小的式子做转换,得到0,1,-1后,即可以用decode来判断。

由于此场景只需要判断差值大于0还是小于等于0,共2种情况,所以按照下述方法可以实现目的。

SELECTSIGN(COMPLETE_TIME-PLAN_FINISHED_TIME) AS SIGN_FLAG,NVL2(COMPLETE_TIME, DECODE(SIGN(COMPLETE_TIME-PLAN_FINISHED_TIME), 1, '未达标', '达标'), '未结单') AS STATE
FROMPLAN

结果

Oracle 先判断是否为空,然后对非空数据做计算(DECODE比较大小)相关推荐

  1. 子串、真子串、非空子串、非空真子串的求解方法(数据结构)

    ** 字串.真子串.非空子串.非空真子串的求解方法 ** Eg:串S="software" 子串的求解方法 n(n+1)/2 +1 此处n为8,所以串S的子串为37 真子串的求解方 ...

  2. android非空验证,Android 非空格式验证框架

    Validation的简介 这是一个简单的函数库,使用注释语法来验证用户输入的表单信息.你仅需编写几行代码就可以实现一些表单验证功能,且显示的所有视图都将反馈给用户.它还带有一个可扩展的在线验证选项, ...

  3. ajax登录非空判断,email ajax传输数据去重和非空判断(示例代码)

    前台: ajax: $(document).ready(function(){ $("#email").blur(function(){ $("#email") ...

  4. Kotlin——初级篇(六):空类型、空安全、非空断言、类型转换等特性总结

    在我们熟知的Java中,定义一个变量可以默认不赋值,因为Java的系统会给我们默认赋一个默认值,并且Java可定义一个赋值为null的变量,这样在使用这个变量的时候都会去显示判断该变量是否为null. ...

  5. 数据库将某个字段由可为空改为非空

    delete from DM_MATERIAL where ELASTICITY is null; alter table DM_MATERIAL modify ELASTICITY not null ...

  6. oracle 表约束非空,oracle--约束(主键、非空、检查)

    问题1:学号重复了,数据还可以插入成功 使用主键约束:学号是唯一标识一条数据的,所以必须唯一且不能为空 ---(1).在确定为主键的字段后添加 primary key关键字 ---(2).在创建表的后 ...

  7. 不是oracle约束的是,oracle--约束(主键、非空、检查)

    - 问题1:学号重复了,数据还可以插入成功 使用主键约束:学号是唯一标识一条数据的,所以必须唯一且不能为空 -(1).在确定为主键的字段后添加 primary key关键字 -(2).在创建表的后面使 ...

  8. Kotlin如何避免“!!”(非空断言)

    当我们把Java自动转成Kotlin的时候,代码里会出现很多非空断言!!.或者某些场景下因为IDE提示或编译错误,也让我们自己加上了一些!!. 但使用!!的后果是有可能抛出IllegalArgumen ...

  9. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)

    文章目录 I . Kotlin 变量总结 II . Kotlin 非空变量 III . 非空变量不能赋空 IV . lateinit 关键字 V . lateinit 初始化判定 VI . Kotli ...

最新文章

  1. 【Java源码分析】Android-LruCache源码分析
  2. 清单革命:为什么不仅是工具革命?
  3. 在 VMware Clone Ubuntu Server 之后,解决网卡问题
  4. java安全编码指南之:lock和同步的正确使用
  5. Hazelcast入门指南第2部分
  6. SQL Server 空间监测
  7. 设计模式-观察者模式 发布/订阅模式
  8. Java模拟实现一个基于文本界面的《家庭记账软件》
  9. 如何从PDF文件中提取几页为一个PDF文件?
  10. 使用java,求100以内的质数(素数)
  11. Mybatis源码分析(一) JDBC Mybatis 简介
  12. 联邦学习数学公式纯手推
  13. 开心网创始人兼CEO程炳皓
  14. Sphinx 全文搜索引擎 介绍指南
  15. 扫码点餐小程序源码_做个扫码点餐的小程序贵吗?
  16. 中兴程序员坠楼事件:男人四十,人生半局
  17. CSS3毛玻璃的几种效果
  18. html编辑器贴吧,推荐HTML编辑器
  19. 应用为王 宝德获最佳国产云计算方案奖
  20. FMODE学习之-------第一站

热门文章

  1. Stream流(工厂的流水线)
  2. Nginx攻击防护、CC防护、防止SQL注入、防XSS的实践配置方法
  3. CSS学习之字体属性系列
  4. 微信实验四、公众号微博营销推广与比较
  5. emui4.0Android主题,华为全新系统EMUI4.0发布:基于安卓6.0!
  6. IntelliJ IDEA-Maven解决依赖冲突大全
  7. 9号服务器奔溃第二天网站首页被k,网站首页被k多长时间可以恢复?网站首页被k有哪些原因呢?...
  8. 2022年熔化焊接与热切割免费试题及熔化焊接与热切割考试总结
  9. 爱普生Epson SureColor T5280MFP 打印机驱动
  10. 区块链技术的主要特征有哪些