12. Oracle中case when详解

格式:

        case expression
        when condition_01 then result_01
        when condition_02 then result_02
        ......

        when condition_n then result_n
        else result_default
        end

表达式expression符合条件condition_01,则返回结果result_01,若该条件不满足,则继续往下判断;以此类推,若不满足上一个条件,则继续判断是否满足下一个条件

若以上条件都不满足,则返回默认值result_default,若省略默认值result_default,则返回null

示例

create table T_STUDENT_SCORE
(
  studentid  VARCHAR2(30) not null,
  classid    VARCHAR2(30),
  score      NUMBER,
  scorelevel VARCHAR2(30)
)

insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId01', 'ClasId01', 50, 'E');
insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId02', 'ClasId01', 60, 'D');
insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId03', 'ClasId01', 70, 'C');
insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId04', 'ClasId02', 80, 'B');
insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId05', 'ClasId02', 90, 'A');
insert into T_STUDENT_SCORE (studentid, classid, score, scorelevel)    values ('StudId06', 'ClasId02', 100, 'S');

最后查询表中数据,返回结果如下

 

【样例展示1】

        sql语句如下:

select t.*,case score when 100 then '完美' end as fullScoreFlag from T_STUDENT_SCORE t

  返回结果如下图:若是100分,则返回“完美”,否则返回null

 

【样例展示2】

        sql语句如下:

select t.*,case score when 100 then '完美' else '其他' end as fullScoreFlag from T_STUDENT_SCORE t

  返回结果如下图:若是100分,则返回“完美”,否则返回“其他”

 

【样例展示3】

        sql语句如下:

select t.*,case score when 100 then '完美' when 90 then '优秀' end as fullScoreFlag from T_STUDENT_SCORE t

返回结果如下图:若是100分,则返回“完美”,若是90分,则返回“优秀”,否则返回null

 

【样例展示4】

        sql语句如下:

select t.*,case score when 100 then '完美' when 90 then '优秀' else '其他' end as fullScoreFlag from T_STUDENT_SCORE t

返回结果如下图:若是100分,则返回“完美”,若是90分,则返回“优秀”,否则返回“其他”

 

【样例展示5】

        sql语句如下:

select * from T_STUDENT_SCORE 
order by 
case 
 when scoreLevel='S' then 0 
 when scoreLevel='A' then 1 
 when scoreLevel='B' then 2 
 when scoreLevel='C' then 3  
 when scoreLevel='D' then 4 
else 5 end
asc

返回结果如下图:按成绩评级由高到低排序。

 

【样例展示6】

        sql语句如下:

 select 
count(*),
case 
 when scoreLevel='S' then '不错'
 when scoreLevel='A' then '不错'
 when scoreLevel='B' then '一般'
 when scoreLevel='C' then '一般'
 when scoreLevel='D' then '较差'
 when scoreLevel='E' then '较差'
 else '其他' end as scoreRemark
from T_STUDENT_SCORE
group by 
case 
 when scoreLevel='S' then '不错'
 when scoreLevel='A' then '不错'
 when scoreLevel='B' then '一般'
 when scoreLevel='C' then '一般'
 when scoreLevel='D' then '较差'
 when scoreLevel='E' then '较差'
 else '其他' end

  返回结果如下图:按成绩评级分组统计学生数量

 

【样例展示7】

        sql语句如下:

select * from T_STUDENT_SCORE where 
(case 
 when scoreLevel='S' then '不错'
 when scoreLevel='A' then '不错'
 when scoreLevel='B' then '一般'
 when scoreLevel='C' then '一般'
 when scoreLevel='D' then '较差'
 when scoreLevel='E' then '较差'
 else '其他' end)='不错'

  返回结果如下图:按成绩评级作为条件筛选成绩不错的学生

 

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

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

相关文章

【算法专题突破】双指针 - 快乐数(3)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:202. 快乐数 - 力扣(Leetcode) 这道题的题目也很容易理解, 看一下题目给的示例就能很容易明白, 但是要注意一个点&#…

pycharm 右键运行代码时总是测试模式运行(run pytest)

*# 问题 使用pycharm时,右键运行代码,结果是这样的: 运行_‘pytesr(xxx.py 内)’ 英语界面可能是这样:run_‘pytesr(xxx.py)’我并不想使用测试模式。如何改回正常模式? 解决办法 本着遇到什么问题就搜什么问题的态…

【mindspore学习】环境配置

本次实验搭配的环境是 CUDA 11.6 CUDNN v8.9.4 TensorRT-8.4.1.5 mindspore 2.1.0。 1、配置 Nvidia 显卡驱动 如果原来的主机已经安装了 nvidia 驱动,为避免版本的冲突,建议先清除掉旧的 nvidia驱动 sudo apt-get --purge remove nvidia* sudo apt…

苍穹外卖总结

前言 1、软件开发流程 瀑布模型需求分析//需求规格说明书、产品原型↓ 设计 //UI设计、数据库设计、接口设计↓编码 //项目代码、单元测试↓ 测试 //测试用例、测试报告↓上线运维 //软件环境安装、配置第一阶段:需求分析需求规格说明书、产品原型一般来说…

系统架构设计师-计算机系统基础知识(1)

目录 一、计算机系统概述 1、冯诺依曼计算结构​编辑 二、存储系统 三、操作系统概述 1、特殊的操作系统 四、进程管理 1、进程与线程的概念 2、进程的同步与互斥 3、PV操作 4、死锁与银行家算法 一、计算机系统概述 1、冯诺依曼计算结构 二、存储系统 从上到下依次&#…

记录一个问题~beego中的配置文件autorender

事情的经过是这样的: 在学习beego框架时,遇到了一个问题: tpl模板文件不显示内容; 原因所在: beego配置文件: appname hello httpport 8080 runmode dev world world dataSourceInfo root:955945tcp(localhost:3306)/gmusic?charsetutf8 #自动渲染 这里关闭后就关闭了自…

【PHP面试题81】php-fpm是什么?它和PHP有什么关系

文章目录 🚀一、前言,php-fpm是什么🚀二、php-fpm与PHP之间的关系🚀三、php-fpm解决的问题🔎3.1 进程管理🔎3.2 进程池管理🔎3.3 性能优化🔎3.4 并发处理 🚀四、php-fpm常…

Redis7安装

1. 使用什么系统安装redis 由于企业里面做Redis开发,99%都是Linux版的运用和安装,几乎不会涉及到Windows版,上一步的讲解只是为了知识的完整性,Windows版不作为重点,同学可以下去自己玩,企业实战就认一个版…

LeetCode-406-根据身高重建队列

题目描述: 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造…

探讨uniapp的组件使用的问题

1 view Flex是Flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性。 当设置display: flex后,继续给view等容器组件设置flex-direction:row或column,就可以在该容器内按行或列排布子组件。uni-app推荐使用flex布…

江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电

长期以来,石油天然气、石油石化、发电和管道输送行业在环保、健康和安全保障方面一直承受着巨大的压力,他们必须确保相关规程在各项作业中得到全面贯彻。 阀门作为流体管道运输中的组成部分,其装配密封度是保证流体运输安全的重要一环&#…

【Midjourney电商与平面设计实战】创作效率提升300%

不得不说,最近智能AI的话题火爆圈内外啦。这不,战火已经从IT行业燃烧到设计行业里了。 刚研究完ChatGPT,现在又出来一个AI作图Midjourney。 其视觉效果令不少网友感叹:“AI已经不逊于人类画师了!” 现如今,在AIGC 热…

尚硅谷宋红康MySQL笔记 10-13

是记录,我不会记录的特别详细 第10章 创建和管理表 标识符命名规则 数据库名、表名不得超过30个字符,变量名限制为29个只能包含 A–Z, a–z, 0–9, _共63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个MySQL软件中,数据库不能…

Android 系统桌面 App —— Launcher 开发(1)

Android 系统桌面 App —— Launcher 开发(1) Launcher简介 Launcher就是Android系统的桌面,俗称“HomeScreen”也就是我们开机后看到的第一个App。launcher其实就是一个app,它的作用是显示和管理手机上其他App。目前市场上有很…

QT基础教程之二 第一个Qt小程序

QT基础教程之二 第一个Qt小程序 按钮的创建 在Qt程序中&#xff0c;最常用的控件之一就是按钮了&#xff0c;首先我们来看下如何创建一个按钮 QPushButton * btn new QPushButton; 头文件 #include <QPushButton>//设置父亲btn->setParent(this);//设置文字btn-&g…

C 连接MySQL8

Linux 安装MySQL 8 请参考文章&#xff1a;Docker 安装MySQL 8 详解 Visual Studio 2022 编写C 连接MySQL 8 C源码 #include <stdio.h> #include <mysql.h> int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集MYSQL_ROW row; //记录结…

基于大语言模型知识问答应用落地实践 – 知识库构建(上)

01 背景介绍 随着大语言模型效果明显提升&#xff0c;其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型&#xff08;LLM&#xff09;知识召回&#xff08;Knowledge Retrieval&#xff09;的方式&#xff0c;在私域知识问答方面可以…

R包开发-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标&#xff1a;在RStudio中创建一个R包&#xff0c;这个R包中包含C函数&#xff0c;接口是Rc…

探讨uniapp的页面问题

1 新建页面 uni-app中的页面&#xff0c;默认保存在工程根目录下的pages目录下。 每次新建页面&#xff0c;均需在pages.json中配置pages列表&#xff1b; 未在pages.json -> pages 中注册的页面&#xff0c;uni-app会在编译阶段进行忽略。pages.json的完整配置参考&am…