case when的使用方法 case when语句使用详解
yuyutoo 2024-10-12 01:42 7 浏览 0 评论
Case具有两种格式。简单Case函数和Case搜索函数。
第一种 格式 : 简单Case函数 :
格式说明
case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2.......
else 默认值 end
eg:
select case job_level when '1' then '1111' when '2' then '1111' when '3' then '1111' else 'eee' end from dbo.employee
第二种 格式 :Case搜索函数
格式说明
case
when 列名= 条件值1 then 选项1
when 列名=条件值2 then 选项2.......
else 默认值 end
eg:
update employee set e_wage = case when job_level = '1' then e_wage*1.97 when job_level = '2' then e_wage*1.07 when job_level = '3' then e_wage*1.06 else e_wage*1.05 end
提示:通常我们在写Case When的语句的时候,会容易忘记 end 这个结束,一定要记得哟!
比较: 两种格式,可以实现相同的功能。
简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的 值,剩下的Case部分将会被自动忽略。
二、case when使用案例
下面我们来看一下,使用Case函数都能做些什么事情。
1、已知数据按照另外一种方式进行分组,分析
- 有如下数据:(为了看得更清楚,直接使用国家代码作为Primary Key)
根据这个国家人口数据,统计各个大洲的人口数量
- 用这个方法来判断工资的等级,并统计每一等级的人数
输出每一个人的薪资等级
然后计算每一个等级的数量
方法1:
方法2:
2、竖表转横表
如下表所示,统计日本、泰国不同性别的人口,“sex”中1代表男性、2代表女性、3代表无性、4代表双性,
要求以(国家、男性、女性、无性、双性)为字段输出表。
首先生成确定的字段(国家、男性、女性、无性、双性),
然后以case when来判断性别中人口的取值,并输出表如下图:
最后使用group by来通过国家分组,并取其中的最大值(有的人会使用sum求和,效果也是一样的)
最终结果如下图:
3、根据条件有选择的update
P_key是表A_TEST1的主键,结果a和b的顺序搞反了,这是需要把a和b倒换过来,一般情况下,要想把两条数据的Primary key,a和b交换,需要经过临时存储,拷贝,读回数据的三个过程,要是使用Case函数的话,一切都变得简单多了。
使用下列方式可将主键a、b替换过来
但这里有一个问题一定要注意,else 后面一定要将原有的值放进来,否则除了a、b以外的值会被置成null,如下图
相关推荐
- 几个经典的linux c多线程面试题解析
-
一、线程与进程的区别?1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程...
- C语言中的信号处理和多线程编程(c语言中的信号处理和多线程编程一样吗)
-
信号处理和多线程编程是C语言中常用的两个特性,它们为开发人员提供了一种灵活和高效的方式来处理异步事件和并发任务。signal.h和threads.h是两个常用的头文件,它们提供了一些函数和数据结构,用...
- C++ 多线程(C++ 多线程面试题)
-
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。基于线程的多任务处理是同...
- C#多线程下的调优(c# 多线程 ui)
-
目录一、原子操作1.基于Lock实现2.基于CAS实现3.自旋锁SpinLock4.读写锁ReaderWriterLockSlim...
- 5分钟学会C/C++多线程编程进程和线程
-
前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...
- c语言的多线程编程(c语言的多线程编程是什么)
-
我们进行嵌入式开发时通常遇到需要对多个任务处理,有的可以使用单片机的中断,同时也可以利用多线程进行任务处理。c语言里的多线程的编写需要引入pthread.h这个头文件,我是在Linux下进行的编写首先...
- 每个程序员应该彻底掌握的多线程编程(Linux C)
-
多线程编程可以说每个程序员的基本功,同时也是开发中的难点之一,本文以LinuxC为例,讲述了线程的创建及常用的几种线程同步的方式,最后对多线程编程进行了总结与思考并给出代码示例。一、创建线程多线程编...
- 浅谈Kafka2.8+在Windows下的搭建与使用
-
前言:周末空闲时间无意找到了一套个性化推荐的源码,整体项目运用了SSH,HDFS,Flume,Hive,Kafka,Spark,Scala等。运行时,本来通过spark计算业务埋点数据时,却发现本地没...
- Zend Studio使用教程:将Zend Studio作为插件安装
-
ZendStudio是新一代的专业级智能PHPIDE,它旨在帮助开发人员提高工作效率,创造出高品质的PHP应用程序!它包含了PHP开发所必须的部件,通过一整套的编辑、调试、分析、优化和数据库工具,...
- 10款Web程序员必备的CSS工具(web开发css)
-
对于web开发来说,CSS是最有效的美化页面、设置页面布局的技术。但问题是,CSS是一种标记性语言,语法结构非常的松散、不严谨。WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或...
- C/C++开发者必备:十款免费集成开发环境IDE
-
集成开发环境(IDE,IntegratedDevelopmentEnvironment)主要用于提供应用程序开发的环境,通常包括编辑器、编译器、调试器等。IDE的种类很多,有的只支持一种特定的编程...
- 推荐给系统管理员的10款Linux GUI工具
-
ZD至顶网CIO与应用频道12月18日专栏:如果你是系统管理员,现在到了一个必须掌握Linux的时候,特别是当你工作在一个更大规模环境下。很多机构已经从Windows迁移出来,在Windows环境...
- 盘点Linux平台下的十佳IDE(linux 软件推荐)
-
Linux是一款在全球范围内应用于许多台式机的开源操作系统,同时它还是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议,...
- 新闻发布系统(源代码)(新闻发布系统详细设计)
-
昨天我说要把这俩系统整合一下!!!结果可以说成功了,也可以说是失败了。虽然两个融合在了一起,但只限在本地访问,连同一局域网都不行。因为两个系统是通过绝对地址相互链接的,所以我用的是localhost(...
- SpiderFlow - 一个无需写代码的爬虫平台
-
网络爬虫,是互联网数据抓取的主要方式之一,许多人都会有类似的需求。然而,网络爬虫的编写,通常需要掌握一定的代码编写能力,乃至于比较复杂的项目组织构建能力,有一定的技术门槛。SpiderFlow,通过可...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
推荐7个模板代码和其他游戏源码下载的网址
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)