zoukankan      html  css  js  c++  java
  • CASE WHEN 及 SELECT CASE WHEN的用法

    sql中的CASE WHEN then 也可以理解为程序中的三元表达式,可以实现相同的功能,不过CASE WHEN then功能更强大

    示例一

    简单Case函数
    CASE sex
    WHEN '1' THEN '男'
    WHEN '2' THEN '女'
    ELSE '其他' END
     
    --Case搜索函数 
    CASE WHEN sex = '1' THEN '男' 
    WHEN sex = '2' THEN '女' 
    ELSE '其他' END  

    示例二

    根据这个国家人口数据,统计亚洲和北美洲的人口数量

    如果使用Case函数,SQL代码如下:

    SELECT  SUM(population), 
    CASE country  WHEN '中国' THEN '亚洲' 
      WHEN '印度' THEN '亚洲' 
      WHEN '日本' THEN '亚洲' 
      WHEN '美国' THEN '北美洲' 
      WHEN '加拿大'  THEN '北美洲' 
      WHEN '墨西哥'  THEN '北美洲' 
    ELSE '其他' END 
    FROM    Table_A 
    GROUP BY
    CASE country 
    WHEN '中国' THEN '亚洲' 
    WHEN '印度' THEN '亚洲'
    WHEN '日本' THEN '亚洲' 
    WHEN '美国' THEN '北美洲' 
    WHEN '加拿大'   THEN '北美洲' 
    WHEN '墨西哥'   THEN '北美洲' 
    ELSE '其他' END

    示例三

    用一个SQL语句完成不同条件的分组。

    按照国家和性别进行分组

    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; 

    示例四

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

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

    Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而 实现更多的功能。
    下面具个例子来说明,有两个表,tbl_A,tbl_B,两个表中都有keyCol列。现在我们对两个表进行比较,tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到,返回结果'Matched',如果没有找到,返回结果'Unmatched'。
    要实现下面这个功能,可以使用下面两条语句
    --使用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;

    总结

    select 与 case结合使用最大的好处有两点,一是在显示查询结果时可以灵活的组织格式,二是有效避免了多次对同一个表或几个表的访问。

  • 相关阅读:
    [原][GIS]ARCGIS投影坐标系转换
    [转][osg]探索未知种族之osg类生物【目录】
    [转][osg]探究osg中的程序设计模式【目录】
    [原][资料整理][osg]osgDB文件读取插件,工作机制,支持格式,自定义插件
    [原][landcover]全球地表植被样例图片
    [转]arcgis for server 10.2 下载及安装
    [原]DOM、DEM、landcover,从tms服务发布格式转arcgis、google服务发布格式
    MySQL 数据库最优化设计原则
    MySQL常用存储引擎及如何选择
    Xtrabackup实现Mysql的InnoDB引擎热备份
  • 原文地址:https://www.cnblogs.com/starts/p/5087387.html
Copyright © 2011-2022 走看看