一、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、已知数据按照另外一种方式进行分组,分析

  • 有如下数据:(为了看得更清楚,直接使用国家代码作为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,如下图

https://www.cnblogs.com/ichenhao/p/8383866.html

原文地址:https://www.cnblogs.com/zhaozhitong/p/12696144.html

时间: 2024-11-10 14:33:14

一、case when的使用方法的相关文章

思考题:用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?(提示:是否对所有的应用领域都适用?使用的方便性?.......)

思考题: 用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?(提示:是否对所有的应用领域都适用?使用的方便性?.......) 简答: 一.用例解释: 在软件工程中,用例是一种在开发新系统或者软件改造时捕获潜在需求的技术.每个用例提供了一个或多个场景,该场景揭示了系统是如何同最终用户或其它系统交互的,从而获得一个明确的业务目标.用例要避免技术术语,取而代之的是最终用户或者领域专家的语言.用例一般是由软件开发者和最终用户共同创作的. 二.创建用例的原则: 用例是短文 用例可以是

ORACLE CASE WHEN 及 SELECT CASE WHEN的使用方法

CASE 语句 CASE selector   WHEN value1 THEN action1;   WHEN value2 THEN action2;   WHEN value3 THEN action3;   …..   ELSE actionN;END CASE; CASE表达式 DECLARE   temp VARCHAR2(10);   v_num number;BEGIN   v_num := &i;   temp := CASE v_num     WHEN 0 THEN 'Ze

SQL Case when 的使用方法(转)

case when--then--else--end的最屌的地方应该是它既在普通的字段中使用,也可以在聚合函数中使用. 原文:http://blog.itpub.net/26451903/viewspace-733526 Case具有两种格式.简单Case函数和Case搜索函数. --Case搜索函数(推荐) CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END --简单Case函数(不推荐) CASE sex WH

SQL Case when 的使用方法 (转)

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

SQL Case when 的使用方法(转自博客园:影子网络科技有限公司)

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

SQL Case when 的使用方法

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

SQL CHECK 约束&Case when 的使用方法

1.CHECK 约束 SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制. SQL CHECK Constraint on CREATE TABLE 下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束.CHECK 约束规定 "Id_P" 列必须只包含大于 0

用Use Case获取需求的方法是否有缺陷,还有哪些地方需要改进

(提示:是否对所有应用领域都适用?使用的方便性?......) Use Case使用原则: 1.通过讲简单的故事来传递消息 讲故事是最有效的人与人交流信息的途径.通过讲故事(Use Case),团队成员能对需求有统一的了解.当我们用自然语言讲故事时,我们会不自觉的把复杂的系统当作一个黑盒子,把重点放在用户的愿望,行动上面,这种做法非常有利于我们找到用户的需求和软件的功能点.当然,故事要包含具体的行动(Actionable),并且是可以验证的(Testable),所以讲故事也要有技巧. 2.保持对

用Use case获取需求的方法是否有什么缺陷,还有什么地方需要改进

Use case通常只能捕获功能方面的需求,但对非功能需求得借助于其它的手段. 传统的Use case模型已经被扩展用于建立领域需求模型,但该模型并不支持领域测试用例的复用和自动生成.给出了领域用例的形式化定义方式,增加了最小数据触发集的描述,提出了用例的动态模型和静态模型概念.扩展活动图用于表示用例之间的动态关系和执行过程,并将值流和对象流融入到活动图的表示中.依据用例的动态模型,可以直接产生测试用例,同时获取测试数据,从而实现领域软件需求与领域测试用例的裁剪过程一致性和同步性. Use Ca