SQL中Case When的用法


在SQL中,“Case  When”语句用于选择判断,在执行时先对条件进行判断,然后根据判断结果做出相应的操作;语法“CASE 字段 WHEN 条件1 THEN 操作1 WHEN 条件2 THEN 操作2...ELSE 操作n END;”。

SQL中Case  When的用法

本教程操作环境:windows7系统、Microsoft SQL Server 2016版、Dell G3电脑。

SQL中case when的用法

case when类似于编程语言中的if else判断、switch case语句。该语句执行时先对条件进行判断,然后根据判断结果做出相应的操作。

Case具有两种格式:简单Case函数和Case搜索函数。

简单Case函数:

CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘0’ THEN ‘女’
ELSE ‘其他’ END

Case搜索函数:

CASE WHEN sex = ‘1’ THEN ‘男’
WHEN sex = ‘0’ THEN ‘女’
ELSE ‘其他’ END

显然,简单Case函数胜在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。

还有一个需要注意的问题,Case函数在满足了某个符合条件后,剩下的条件将会被自动忽略,因此,即使满足多个条件,执行过程中也只认第一个条件。

(PHP中文网,有大量免费的SQL教程,欢迎大家学习!)

在使用 CASE WHEN时,可以把它当作一个逻辑上的匿名字段,字段值根据条件确认,在需要使用字段名时可以是用 as来定义别名。这么说还很抽象,看看下面 CASE WHEN的使用案例就清楚了。

使用场景

1、可以将已知数据按照某种方式进行分组,分析。

1.png

根据这个国家人口数据,统计亚洲和北美洲的人口数量。使用如下 SQL:

人声去除 人声去除

用强大的AI算法将声音从音乐中分离出来

人声去除 23 查看详情 人声去除
SELECT  CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END as '洲' , SUM(population) as '人口'
FROM test
GROUP BY CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END;

2.png

这里的两个CASE WHEN都相当于一个字段,不过值得一提的是,第二个CASE WHEN 的THEN值并不用写明是什么洲,它只是用于将记录进行分组,所以THEN后面的值只有能区分这三种记录就行,GROUP BY也可以写成:

GROUP BY CASE country
WHEN '中国'     THEN 0
WHEN '印度'     THEN 0
WHEN '日本'     THEN 0
WHEN '美国'     THEN 1
WHEN '加拿大'  THEN 1
WHEN '墨西哥'  THEN 1
ELSE 2 END;

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

有如下数据:

3.png

用Case函数来完成按照国家和性别进行分组。使用如下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;

得到如下结果:

4.png

就第一个CASE WHEN讲解:

CASE WHEN sex = '1' THEN
population ELSE 0 END

当记录的sex为1时,这个字段的值为记录的population值,否则为0,因此能计算出一个国家的男性人口。

更多SQL等编程入门教程,请持续关注PHP中文网!!        

以上就是SQL中Case When的用法的详细内容,更多请关注其它相关文章!


# 中国  # 网站建设团队多少钱  # 阜阳网站建设专业机构  # 铜仁大数据网站建设渠道  # 白杨网站建设  # 推广创业项目的网站  # seo优化提升排名seo公司  # 北京seo哪家服务好  # 个人网站建设设计总结  # 手绘图片做视频网站推广  # 推广网站java优化  # 第一个  # sql  # 美国  # 日本  # 中文网  # 印度  # 加拿大  # 墨西哥  # 亚洲  # 北美洲  # 用法  # when  # case 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 支付宝网页版在线入口 支付宝官网电脑登录入口  广州地铁app准妈咪徽章领取方法  PHP安全加载非公开目录图片与动态内容类型处理指南  《sketchbook》选中部分图案移动方法  被称为海蜈蚣的海洋动物是  网站体验不好=浪费钱:如何提升-用户体验效果差  如何外贸网站设计-能留住客户提升用户体验!  VS Code快捷键when上下文子句的妙用  t3出行如何使用微信支付  一加 Ace 6V 快充无法启用_一加 Ace 6V 充电优化  使用VS Code作为你的个人知识管理系统  微博网页版入口链接 微博网页版在线互动平台  PHP页面重载时变量值不重置的实现方法  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  uc浏览器官网网页版使用 uc浏览器官网免费在线首页  Lar*el 关联查询:同时筛选父表与子表数据的高效策略  Flexbox布局中Stencil组件宽度不显示问题解析与:host尺寸控制  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  《环球网校》设置报考省市方法  PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角  《新三国志曹操传》游历事件袁尚突围攻略  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  怎么恢复删除的电脑文件_数据恢复软件使用教程  C++如何实现单例模式_C++线程安全的单例模式写法  解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用  海棠阅读网页版_进入海棠网页版在线阅读中心  路由器DNS怎么设置最快 优化DNS提升上网速度教程  realme 10 Pro息屏方案_realme 10 Pro省电策略  如何在Podman容器中运行Composer_Docker替代品Podman的PHP与Composer容器化实践  《幻兽帕鲁》手游帕鲁捕捉技巧分享  Pandas中基于动态偏移量实现DataFrame列值位移的策略  电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】  鸿蒙单条备忘录如何加密  Go反射进阶:访问内嵌结构体中的被遮蔽方法  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题  《饿了么》拼好饭点外卖教程2025  Dash应用中自定义HTML页面标题与网站图标(F*icon)的实用指南  蛙漫2(台版)正版官网 2025免费网页版分享  byrutor直接访问入口 byrutor官方游戏库  Google Cloud Functions 时区处理指南:理解与最佳实践  酷狗音乐多音轨设置教程  免费占卜在线神算_免费占卜手机神算  解决CSS background 属性中 cover 关键字的常见误用  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  宝妈做视频号该写什么标签话题?宝妈关注的话题有哪些?  C++ static关键字作用_C++静态成员变量与静态函数  如何查询个人病历记录  C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别 

 2020-02-18

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.