zoukankan      html  css  js  c++  java
  • Oracle(00):CASE WHEN 用法

    一、case when 的基本用法见:

    PL/SQL 使用控制流程 https://www.cnblogs.com/springsnow/p/9394892.html

    二、case when在select语句中的用法

    SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1   ELSE NULL   END) 男生数,
                  COUNT (CASE WHEN sex = 2 THEN 1   ELSE NULL   END) 女生数
    FROM students
    GROUP BY grade;

    1、在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等。

    Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而 实现更多的功能。

    SELECT keyCol, CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B )  THEN 'Matched' ELSE 'Unmatched' END Label 
    FROM tbl_A;

    也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。

    2、根据条件有选择的UPDATE。

    UPDATE PersonnelSET salary =
    CASE WHEN salary >= 5000                   THEN salary * 0.9 
         WHEN salary >= 2000 AND salary < 4600  THEN salary * 1.15 
    ELSE salary END;

    三、case when在where语句中的用法

    SELECT * FROM   TB_Test
    WHERE  stateid IN ( 10, 20 )
           AND ( CASE  WHEN stateid = 20 AND userid <> 2 THEN 0
                       ELSE 1 
                  END ) = 1

    四、case when在group by 语句中的用法(不常用)

    SELECT 
    CASE WHEN salary <= 500 THEN '1' 
    WHEN salary > 500 AND salary <= 600  THEN '2' 
    WHEN salary > 600 AND salary <= 800  THEN '3' 
    ELSE NULL END salary_class, -- 别名命名
    COUNT(*)  FROM    Table_A 
    GROUP BY 
    CASE WHEN salary <= 500 THEN '1' 
    WHEN salary > 500 AND salary <= 600  THEN '2' 
    WHEN salary > 600 AND salary <= 800  THEN '3' 
    ELSE NULL END;
  • 相关阅读:
    foreach_and_函数
    集合
    二维数组
    二维数组的操作
    字符串类型的一些操作
    数组循环的操作及思路
    数组操作
    js各种获取当前窗口页面宽度、高度的方法
    Jquery 获取 radio选中值,select选中值
    jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画
  • 原文地址:https://www.cnblogs.com/springsnow/p/9394901.html
Copyright © 2011-2022 走看看