下面是一个是用case函数来完成这个功能的例子

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搜索函数相比,功能方面会有些限制,比如写判断式。 
还有一个需要注意的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。 
--比如说,下面这段sql,你永远无法得到“第二类”这个结果

case when col_1 in ( 'a', 'b') then '第一类'
         when col_1 in ('a')       then '第二类'
else'其他' end

下面看一些实例

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;

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;

关于case 二

select 
case when salary <= 500 then '1' 
when salary > 500 and salary <= 600 then '2' 
when salary > 600 and salary <= 800 then '3' 
when salary > 800 and salary <= 1000 then '4' 
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' 
when salary > 800 and salary <= 1000 then '4' 
else null end;

mysq中横表和纵表的转换有时也是用这种 方法来转换 http://blog.csdn.net/fysuccess/article/details/40789869

case when 是静态的转换方法,肯定不适合大量动态数据的查询,新的查询方法如下  http://qianzhang.blog.51cto.com/317608/1202793

sql case 函数与详细说明的更多相关文章

  1. SQL常用函数总结

    SQL常用函数总结 这是我在项目开发中使用db2数据库写存储过程的时候经常用到的sql函数.希望对大家有所帮助: sql cast函数 (1).CAST()函数的参数是一个表达式,它包括用AS关键字分 ...

  2. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  3. sql 约束Check中使用Case函数

    CHECK 约束用于限制列中的值的范围 在Check中使用Case函数在很多情况下都是非常不错的解决方法.可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Ch ...

  4. SQL语句中case函数

    case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数. case函数的一般有两种用法:1.case expressi ...

  5. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  6. 转 SQL集合函数中利用case when then 技巧

    SQL集合函数中利用case when then 技巧 我们都知道SQL中适用case when then来转化数据库中的信息 比如  select (case sex when 0 then '男' ...

  7. SQL变量、Substring、charindex、case函数、去除重复

      isnull(aa,0)删除表数据: truncate table aaa 添加字段: ALTER TABLE table1 ADD col1 varchar(200) DEFAULT '2008 ...

  8. SQL SERVER 函数大全[转]

    SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...

  9. sql server 函数的自定义

    创建用户定义函数.这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,该例程可返回一个值.用户定义函数不能用于执行修改数据库状态的操作.与系统函数一样,用户定义函数可从查询中 ...

随机推荐

  1. 112. Path Sum (Tree; DFS)

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  2. 【Unity】关于U3d与bip骨骼适配

    http://blog.csdn.net/kiki110120/article/details/50371662 写在2015/12/21 1.Generic 在拿到美术FBX文件后,导入u3d,默认 ...

  3. OpenCV之设计模式

    参考资料: http://hahack.com/codes/opencv-and-mvc/ http://blog.csdn.net/yzhang6_10/article/details/508084 ...

  4. CentOS安装配置Tomcat-7

    安装环境:CentOS-6.5安装方式:源码安装软件:apache-tomcat-7.0.29.tar.gz下载地址:http://tomcat.apache.org/download-70.cgi ...

  5. [C++] STACK_Principle

    STACK_Principle

  6. [转]Python-__builtin__与__builtins__的区别与关系(超详细,经典)

    在学习Python时,很多人会问到__builtin__.__builtins__和builtins之间有什么关系.百度或Google一下,有很 多答案,但是这些答案要么不准确,要么只说了一点点,并不 ...

  7. Spring5源码解析-论Spring DispatcherServlet的生命周期

    Spring Web框架架构的主要部分是DispatcherServlet.也就是本文中重点介绍的对象. 在本文的第一部分中,我们将看到基于Spring的DispatcherServlet的主要概念: ...

  8. logcat命令详解【一】

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试 ...

  9. spring-boot-maven-plugin插件作用

    转自:http://blog.csdn.net/hotdust/article/details/51404828 OM 文件中添加了“org.springframework.boot:spring-b ...

  10. 删除 Ceph 的image报rbd: error: image still has watchers

    在Ceph集群日常运维中,管理员可能会遇到有的image删除不了的情况,有一种情况是由于image下有快照信息,只需要先将快照信息清除,然后再删除该image即可,还有一种情况是因为该image仍旧被 ...