这篇文章在借鉴前人的基础上,进行了验证,感谢前人的分享

一、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相关推荐

  1. case when的判断顺序_CASE 表达式

    一.语法及作用 使用CASE表达式可以帮助我们解决复杂的查询问题,相当于条件判断的函数,判断每一行是不是满足条件. CASE WHEN (判断表达式) THEN (表达式)WHEN (判断表达式) T ...

  2. 6-1 判断顺序表是否有序(Java语言描述 ) (15 分)

    6-1 判断顺序表是否有序(Java语言描述 ) (15 分) (用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接 ...

  3. 6-1 判断顺序表是否有序(Java语言描述 )

    (用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接口定义: 方法接口: public boolean isOrde ...

  4. 6-1 判断顺序表是否有序(Java语言描述)

    6-1 判断顺序表是否有序(Java语言描述) (15 分) (用Java语言实现) 要求实现一个顺序表的成员方法,判断 顺序表L中的所有元素是否是递增有序的.线性表元素个数不超过100个. 函数接口 ...

  5. 判断顺序栈栈满的两种方式

    判断顺序栈栈满的两种方式

  6. c if语句多个条件判断顺序_Java中的流程控制语句 (基础篇四)

    流程控制就是对事物次序的布置和安排,在程序中就是对代码执行次序的安排和控制 程序中的流程控制主要有三种:顺序流程.选择流程.循环流程. 顺序流程:比如打印输出的代码按照指定的顺序结构依次排序,打印的结 ...

  7. Go语言-switch case | switch中判断多个值、interface conversion: interface {} is float64, not int

    文章目录 Go语言-switch case 背景 switch case Golang中switch的特殊用法--fallthrough go语言switch中判断多个值 Type Switch,判断 ...

  8. case....when ...多重判断

    CASE...WHEN 进行多重判断 CASE WHEN A  IS NOT NULL THEN B WHEN C IS NULL THEN CASE WHEN D IS NOT NULL THEN ...

  9. java 判断顺序_通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)...

    问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...

最新文章

  1. iOS下JS与OC互相调用(八)--Cordova详解+实战
  2. ROS学习之包的概念
  3. 第三方登录过程—OAuth2.0协议
  4. 计算机教师队伍掌握的素质,多措并举,努力打造高素质计算机教师x队伍.doc
  5. getpass 模块
  6. android短信安全,[原创]分析了一款android短信木马
  7. OpenCV为Halide后端安排网络
  8. git gui here如何汉化_你不知道的一些在Git使用中的奇技淫巧!
  9. LeetCode 460. LFU缓存(哈希双链表)
  10. SQLite、MySQL和PostgreSQL 三种关系数据库比较
  11. centos65编译安装lamp和lnmp
  12. js的异常捕获try和catch语句
  13. 单麦克纳姆轮的速度分解
  14. O - Can you find it?
  15. 编写跨浏览器兼容的 CSS 代码的金科玉律
  16. PPT 最后一页写什么结束语既得体又能瞬间提升格调?
  17. 汕尾话专用专注微信聊天表情GIF图片
  18. [usOJ5529]小奇探险
  19. 销毁一颗二叉树--Destroy(Node* root)
  20. C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。

热门文章

  1. 证明:y=cos(x)在区间x∈(-∞,+∞)是连续的
  2. 第十二届蓝桥杯大赛模拟赛(第二期)
  3. 简单两步,将Windows11右键菜单修改为Windows10风格
  4. 你的架构是如何一步步腐化的?
  5. 从汉字到区位码的转换
  6. 3D打印喷嘴大小如何选择0.2-0.5mm喷嘴
  7. matlab-基础 逻辑运算符 不等于
  8. 微信小程序--域名配置
  9. 如何获取维普免费账号--在校外下载维普万方等全文
  10. ubuntu 安装 go 和 go-ethereum 流程