博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql case 函数与详细说明
阅读量:6970 次
发布时间:2019-06-27

本文共 1611 字,大约阅读时间需要 5 分钟。

下面是一个是用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

转载于:https://www.cnblogs.com/xs-yqz/p/6420672.html

你可能感兴趣的文章
memcached编译安装
查看>>
根文件系统基础
查看>>
学习Linux决心书
查看>>
2017年 JavaScript 框架回顾 -- React生态系统
查看>>
不停机发布策略
查看>>
OpenStack各组件介绍
查看>>
J.U.C工具类中的CountDownLatch和CyclicBarrier
查看>>
dovecot+mysql
查看>>
Mysql密码管理及授权
查看>>
JAVA线程安全之synchronized关键字的正确用法
查看>>
springmvc+mybatis+dubbo分布式平台-maven构建根项目
查看>>
一个小常识
查看>>
Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理
查看>>
解决虚拟机中使用ntpdate报错:ntpdate[46700]: no server suitab
查看>>
Docker 快速删除所有容器
查看>>
【OCP认证12c题库】CUUG 071题库考试原题及答案(27)
查看>>
OSS支持IPV6/IPV4双栈访问域名
查看>>
阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
查看>>
最全面的IGMP协议总结!
查看>>
你还在 Select * 吗?
查看>>