case when的判断顺序_case when
这篇文章在借鉴前人的基础上,进行了验证,感谢前人的分享
一、case when的使用方法
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、已知数据按照另外一种方式进行分组,分析
有如下数据:(为了看得更清楚,直接使用国家代码作为PrimaryKey)
根据这个国家人口数据,统计各个大洲的人口数量
用这个方法来判断工资的等级,并统计每一等级的人数
输出每一个人的薪资等级
然后计算每一个等级的数量
方法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,如下图
case when的判断顺序_case when相关推荐
- case when的判断顺序_CASE 表达式
一.语法及作用 使用CASE表达式可以帮助我们解决复杂的查询问题,相当于条件判断的函数,判断每一行是不是满足条件. CASE WHEN (判断表达式) THEN (表达式)WHEN (判断表达式) T ...
- 6-1 判断顺序表是否有序(Java语言描述 ) (15 分)
6-1 判断顺序表是否有序(Java语言描述 ) (15 分) (用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接 ...
- 6-1 判断顺序表是否有序(Java语言描述 )
(用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接口定义: 方法接口: public boolean isOrde ...
- 6-1 判断顺序表是否有序(Java语言描述)
6-1 判断顺序表是否有序(Java语言描述) (15 分) (用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接口 ...
- 判断顺序栈栈满的两种方式
判断顺序栈栈满的两种方式
- c if语句多个条件判断顺序_Java中的流程控制语句 (基础篇四)
流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制 程序中的流程控制主要有三种:顺序流程.选择流程.循环流程. 顺序流程:比如打印输出的代码按照指定的顺序结构依次排序,打印的结 ...
- Go语言-switch case | switch中判断多个值、interface conversion: interface {} is float64, not int
文章目录 Go语言-switch case 背景 switch case Golang中switch的特殊用法--fallthrough go语言switch中判断多个值 Type Switch,判断 ...
- case....when ...多重判断
CASE...WHEN 进行多重判断 CASE WHEN A IS NOT NULL THEN B WHEN C IS NULL THEN CASE WHEN D IS NOT NULL THEN ...
- java 判断顺序_通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)...
问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...
最新文章
- iOS下JS与OC互相调用(八)--Cordova详解+实战
- ROS学习之包的概念
- 第三方登录过程—OAuth2.0协议
- 计算机教师队伍掌握的素质,多措并举,努力打造高素质计算机教师x队伍.doc
- getpass 模块
- android短信安全,[原创]分析了一款android短信木马
- OpenCV为Halide后端安排网络
- git gui here如何汉化_你不知道的一些在Git使用中的奇技淫巧!
- LeetCode 460. LFU缓存(哈希双链表)
- SQLite、MySQL和PostgreSQL 三种关系数据库比较
- centos65编译安装lamp和lnmp
- js的异常捕获try和catch语句
- 单麦克纳姆轮的速度分解
- O - Can you find it?
- 编写跨浏览器兼容的 CSS 代码的金科玉律
- PPT 最后一页写什么结束语既得体又能瞬间提升格调?
- 汕尾话专用专注微信聊天表情GIF图片
- [usOJ5529]小奇探险
- 销毁一颗二叉树--Destroy(Node* root)
- C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。