美文网首页
CASE WHEN 用法

CASE WHEN 用法

作者: 书院五竹 | 来源:发表于2018-05-16 16:53 被阅读3435次

一、用法

case 
  when sex = '1' then '男'
  when sex = '2' then '女'
else '未知' end

Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
Case when 相当于一个自定义的数据透视表,group by 是行名,case when 负责列名。

二、实例

  1. 与GROUP BY 结合,自定义列联表统计
SELECT country, 
  SUM( CASE WHEN sex = '1' THEN  population ELSE 0 END),  --男性人口 
  SUM( CASE WHEN sex = '2' THEN  population ELSE 0 END)   --女性人口
  FROM  Table_A  GROUP BY country; 
  • 增加分组条件


    增加分组条件.png
  1. 与Group by结合,自定义分组统计
/*新建一个表demo*/
CREATE TABLE demo (
  type varchar(10)  NULL,
  num int NULL)

/*插入数据*/
insert into demo values ('A',10);
insert into demo values ('B',10);
insert into demo values ('C',10);
insert into demo values ('D',10);
insert into demo values ('E',10);
insert into demo values ('F',10);
insert into demo values ('G',10);

/*利用CASE WHEN 和 GROUP BY 实现自定义分组合计*/
select 
  case 
    when type in('A','C','D') THEN 'ACD'
    when type in('F','G') THEN 'FG'
  else type end as types,sum(num)
  from demo
  group by 
  case 
    when type in('A','C','D') THEN 'ACD'
    when type in('F','G') THEN 'FG'
  else type end  
  • 原始表


    原始表.png
  • select 结果


    select结果
  1. 与distinct结合,去重分组统计
select 
  count(distinct case when photo='1'  then id else null end )photo1_count,
  count(distinct case when photo='2'  then id else null end )photo2_count
  from photos

4.根据条件有选择的UPDATE

UPDATE Personnel
SET salary =
CASE 
  WHEN salary >= 5000                   THEN salary * 0.9 
  WHEN salary >= 2000 AND salary < 4600  THEN salary * 1.15 
ELSE salary END; 
UPDATE SomeTable 
SET p_key = CASE WHEN p_key = 'a'  THEN 'b' 
WHEN p_key = 'b'  THEN 'a'  ELSE p_key END 
WHERE p_key IN ('a', 'b'); 

5.两个表数据是否一致的检查

--使用IN的时候 
SELECT keyCol, 
CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B )  THEN 'Matched' 
ELSE 'Unmatched' END Label 
FROM tbl_A; 
 
--使用EXISTS的时候 
SELECT keyCol, 
CASE WHEN EXISTS ( SELECT * FROM tbl_B  WHERE tbl_A.keyCol = tbl_B.keyCol )  THEN 'Matched'  ELSE 'Unmatched' END Label 
FROM tbl_A; 

参考:用法详解

相关文章

  • mysql 流程控制语句 笔记!

    一般查询用法: 批量更新用法: case when: case null when 表达式 then 执行...

  • CASE WHEN 用法

    一、用法 Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。Case when 相当于一个自...

  • CASE WHEN 用法

    Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数CASEsexWHEN'1'THE...

  • case when then用法

    示例1、

  • case when用法

    case有以下几种搭配:1.in any case表示无论如何;2.in no case表示绝不。when有以下几...

  • mysql case when用法

    如图,是一张表格数据 我们需要求出每天的胜负次数 我们的sql语句是

  • CASE WHEN 高阶用法?

    两个表做关联时,以左表为准,若左表某列不为空,则与右表对应列进行关联匹配,为空则不做匹配。 以上做法,有一种说不出...

  • SQL的case when 用法

    Case具有两种格式。简单Case函数和Case搜索函数。 这两种方式,可以实现相同的功能。简单Case函数的写法...

  • SqlServer Case when then用法总结

    数据库存储的角色和状态值 1-超级管理员 2-普通管理员 3-普通用户0-禁用 1-启用 核心代码

  • SQL之case when then用法

    case具有两种格式。简单case函数和case搜索函数。 场景1:现老师要统计班中,有多少男同学,多少女同学,并...

网友评论

      本文标题:CASE WHEN 用法

      本文链接:https://www.haomeiwen.com/subject/yptmdftx.html