SQL之CASE WHEN函数语句多条件下使用详解

这篇具有很好参考价值的文章主要介绍了SQL之CASE WHEN函数语句多条件下使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

针对CASE WHEN函数语句,实现简单CASE函数和CASE搜索函数两种格式。
同时配合 SUM以及COUNT方法的使用

1、CASE 的两种格式: 简单CASE函数和CASE搜索函数

**简单CASE函数**
CASE 条件参数名称
    WHEN 参数值1 THEN '显示值1'
    WHEN 参数值2 THEN '显示值2'
    ...
ELSE '显示其他值' END

**CASE搜索函数**
CASE 
    WHEN 条件参数名称 = '参数值1' THEN '显示值1'
    WHEN 条件参数名称 = '参数值2' THEN '显示值2'
    ...
ELSE '显示其他值' END

两种格式示例:
状态:state
订单号:orderId

**简单CASE函数**
SELECT
	orderId,
	CASE state
	    WHEN 1 THEN '启动'
	    WHEN 2 THEN '关闭'
	ELSE '未知状态' END AS statusName
FROM t_table

**CASE搜索函数**
SELECT
	orderId,
	CASE 
	    WHEN state = '1' THEN '启动'
	    WHEN state = '2' THEN '关闭'
	ELSE '未知状态' END AS stateName
FROM t_table

这两种格式式,可以实现相同的功能。但是简单CASE函数和CASE搜索函数相比,功能方面会有些限制,比如写判断式:

SELECT
	orderId,
	CASE 
	    WHEN state = '1' THEN '启动'
	    WHEN state = '2' THEN '关闭'
	    WHEN state IN ('3', '4') THEN '待解锁'
	ELSE '未知状态' END AS stateName
FROM t_table

若是多重时,WHEN 的 IN 条件中的值和下一个 WHEN 的条件重合会被忽略,如下面的 “关闭” 状态会被忽略,永远无法得到 “关闭”

SELECT
	orderId,
	CASE 
	    WHEN state = '1' THEN '启动'
	    WHEN state IN ('2', '3', '4') THEN '待解锁'
	    WHEN state = '2' THEN '关闭'
	ELSE '未知状态' END AS stateName
FROM t_table

2、同时配合 SUM以及COUNT方法的使用

(1)SUM函数

**简单CASE函数**
SUM(CASE 条件参数名称
    	WHEN 参数值 THEN '显示被求和值'
	ELSE 0 END
	) AS SUMAMT

**CASE搜索函数**
SUM(CASE 
    	WHEN 条件参数名称 = '参数值' THEN '显示被求和值'
	ELSE 0 END
	) AS SUMAMT

**或者**	
SUM(CASE 
    	WHEN 
    		条件参数名称1 = '参数值1' AND 条件参数名称2 = '参数值2' ...
    	THEN '显示被求和值'
	ELSE 0 END
	) AS SUMAMT
	
**或者**	
SUM(CASE 
    	WHEN 
    		条件参数名称1 IN ('参数值n') AND 条件参数名称2 = '参数值2' ...
    	THEN '显示被求和值'
	ELSE 0 END
	) AS SUMAMT

示例: 根据时间条件查询值,有值时显示 “被求和值”, 没有值时,显示 “null”
状态:state
类型:t_type
金额:amt

**简单CASE函数**
SELECT
	SUM(CASE state
	    WHEN 1 THEN amt
	ELSE 0 END 
	) AS sumAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**CASE搜索函数**
SELECT
	SUM(CASE 
	    WHEN state = '1' THEN amt
	ELSE 0 END 
	) AS sumAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**或者**
SELECT
	SUM(CASE 
	    WHEN state = '1' AND t_type = '2' THEN amt
	ELSE 0 END 
	) AS sumAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**或者**
SELECT
	SUM(CASE 
	    WHEN state IN ('2', '3', '4') AND t_type = '2' THEN amt
	ELSE 0 END 
	) AS sumAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

(2)COUNT函数

**简单CASE函数**
COUNT(CASE 条件参数名称
    	WHEN 参数值 THEN 1
	ELSE 0 END
	) AS COUNTAMT

**CASE搜索函数**
COUNT(CASE 
    	WHEN 条件参数名称 = '参数值' THEN 1
	ELSE 0 END
	) AS COUNTAMT

**或者**	
COUNT(CASE 
    	WHEN 
    		条件参数名称1 = '参数值1' AND 条件参数名称2 = '参数值2' ...
    	THEN 1
	ELSE 0 END
	) AS COUNTAMT
	
**或者**	
COUNT(CASE 
    	WHEN 
    		条件参数名称1 IN ('参数值n') AND 条件参数名称2 = '参数值2' ...
    	THEN 1
	ELSE 0 END
	) AS COUNTAMT

示例: 根据时间条件查询值,有值时显示 “总条数值”, 没有值时,显示 “0”
状态:state
类型:t_type
金额:amt文章来源地址https://www.toymoban.com/news/detail-516209.html

**简单CASE函数**
SELECT
	COUNT(CASE state
	    WHEN 1 THEN 1
	ELSE 0 END 
	) AS countAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**CASE搜索函数**
SELECT
	COUNT(CASE 
	    WHEN state = '1' THEN 1
	ELSE 0 END 
	) AS countAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**或者**
SELECT
	COUNT(CASE 
	    WHEN state = '1' AND t_type = '2' THEN 1
	ELSE 0 END 
	) AS countAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

**或者**
SELECT
	COUNT(CASE 
	    WHEN state IN ('2', '3', '4') AND t_type = '2' THEN 1
	ELSE 0 END 
	) AS countAmt
FROM 
	t_table
WHERE
	core_time >= '2020-07-01 00:00:00'
AND core_time <= '2020-07-20 23:59:59'
GROUP BY core_time

到了这里,关于SQL之CASE WHEN函数语句多条件下使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL中case when用法详解及使用案例

    Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数格式: Case搜索函数: case when与子查询性能比较及优化。 为了方便说明,我们先创建表,并造点数据。 统计亚洲和北美洲的人口数量,要求结果如下: 若第一时间没有想到case when,我们可能会写出下面的sql: 运行

    2024年02月15日
    浏览(26)
  • SQL中的CASE WHEN语句:从基础到高级应用指南

    我们使用一个名为\\\"Products\\\"的表,包含以下列:ProductID、ProductName、CategoryID、UnitPrice、StockQuantity。 示例展示 productID productName categoryID unitPrice stockQuantity 1 Laptop 1 800 50 2 Smartphone 1 500 100 3 T-shirt 2 20 200 4 Jeans 2 40 150 5 Headphones 1 100 75 1. CASE WHEN-基本使用 查询结果: ProductName UnitPric

    2024年02月09日
    浏览(28)
  • SQL的CASE WHEN函数、CAST函数、CONVERT() 函数、COALESCE()函数、DATEDIFF()函数

    一、CASE WHEN简单使用 二、CASE WHEN语句与聚合函数一起使用 三、CAST函数 用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS分隔的源值和目标数据类型。 可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

    2024年02月07日
    浏览(29)
  • SQL SERVER case when的使用方法

    一、case when的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 第一种 格式 : 简单Case函数 : 格式说明 case 列名 when 条件值1 then 选项1 when 条件值2 then 选项2… else 默认值 end eg: select case job_level when ‘1’ then ‘1111’ when ‘2’ then ‘1111’ when ‘3’ then ‘1111’ else ‘e

    2024年02月13日
    浏览(28)
  • Mybatis 常用条件语句,大于小于、if、for、模糊搜索、case when、choose

    目录 大于小于 if 条件判断  for循环 LIKE 模糊搜索 case when choose选择语句 前言-与正文无关         生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世

    2024年02月01日
    浏览(33)
  • hive SQL: case when + group by 的用法

    假设有一个数据表,包含了不同人员的信息,其中包括姓名、性别、年龄等字段。现在需要统计不同年龄区间的人数,并按照年龄区间进行分组。可以使用如下 SQL 语句实现: ``` SELECT    CASE      WHEN age BETWEEN 0 AND 10 THEN \\\'0-10\\\'      WHEN age BETWEEN 11 AND 20 THEN \\\'11-20\\\'      WHEN a

    2024年02月08日
    浏览(28)
  • SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

    SELECT INTO 语句将数据从一个表复制到一个新表中。 新表将按照在旧表中定义的列名和类型创建。您可以使用 AS 子句创建新的列名。 以下 SQL 语句创建 Customers 的备份副本: 以下 SQL 语句使用 IN 子句将表复制到另一个数据库中的新表中: 以下 SQL 语句仅复制一些列到新表中:

    2024年02月05日
    浏览(28)
  • 理解case when then else end 的使用,基础概念,建表语句,用例讲解

    case :表示需要处理的字段 when :表示条件 then :表示当when执行为true时,再执行的语句 else :表示当所有的when执行为false时,再执行的语句 end:表示 case 语句结束的结尾 图形化表格 执行sql语句 结果 讲解:进行匹配的是名字name,首先匹配第一行,name是等于张三,所以返回

    2024年02月08日
    浏览(25)
  • case when then else end语句的用法

    case具有两种格式。简单case函数和case搜索函数。 --简单case函数             case sex             when \\\'1\\\' then \\\'男\\\'             when \\\'2\\\' then \\\'女\\\'             else \\\'其他\\\' end  --case搜索函数--经常用的是这个             case when sex = \\\'1\\\' then \\\'男\\\'  

    2024年02月10日
    浏览(22)
  • Django笔记二十三之case、when操作条件表达式搜索、更新等操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十三之条件表达式搜索、更新等操作 这一篇笔记将介绍条件表达式,就是如何在 model 的使用中根据不同的条件筛选数据返回。 这个操作类似于数据库中 if elif else 的逻辑。 以下是本篇笔记的目录: model 和数据准备 When 和

    2023年04月13日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包