SQL CASE 的用法

  1. --简单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

-------------------------------------------------------------------------------------------------------------------

2.批量更新数据

--假设状态只有3个选项,把所有FStatus=3的更新为1,FStatus=88的更新为5,FStatus=99的更新为9,

update T_SUF_Barcode set FStatus=(case FStatus

when ‘3‘ then ‘1‘

when ‘88‘ then ‘55‘

else FStatus  end)

where   FBarcode  between ‘180121702150001‘ and ‘180121702153000‘

----------------------------------------------------------------------------------------------------------------

3.将条码表中的状态用中文表示

select fstatus from T_SUF_Barcode t1   where   FBarcode  between ‘180121702150001‘ and ‘180121702153000‘

--------------------------------------------------------------------------------------------------------------------

fstatus

1

...

5

...

5

9

...

---------------------------------------------------------------------------------------------------------------------

select t1.FBarcode, (case t1.FStatus

when  1 then ‘正常‘

when  5 then ‘未知‘

when  9 then ‘作废‘ end)状态

from T_SUF_Barcode t1

where   FBarcode  between ‘180121702150001‘ and ‘180121702153000‘

FBarcode状态

180121702150001正常

180121702150002...

180121702150003 未知

180121702150004...

180121702150011作废

180121702150012...

4.将sum与case结合使用,可以实现分段统计。
     如果现在希望将上表中各种状态的条码进行统计,sql语句如下:

select

sum(case t1.FStatus when 1 then 1  end)正常,

sum(case t1.FStatus when 5 then 2  end)未知,

sum(case  when t1.FStatus !=1 and t1.FStatus!=5 then 1  end)作废

from T_SUF_Barcode t1  where   FBarcode  between ‘180121702150001‘ and ‘180121702153000‘

--sum求和,当为5时,更新为2,并求和符合条件的2。这里正常,未知,作废符合条件的各有1000个数据。

正常 未知          作废

1000 2000(1000*2)   1000

--------------------------------------------

select

count(case t1.FStatus when 1 then 1  end)正常,

count(case t1.FStatus when 5 then 1  end)未知,

count(case  when t1.FStatus !=1 and t1.FStatus!=5 then 1  end)作废

from T_SUF_Barcode t1  where   FBarcode  between ‘180121702150001‘ and ‘180121702153000‘

--统计符合条件的个数。

正常 未知 作废

1000 1000 1000

时间: 2024-08-02 15:11:58

SQL CASE 的用法的相关文章

sql case when 用法

sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.            例如,下面的语句显示中文年月         select   getdate()   as   日期,case   month(getdate())     when   11   then   '十一'     when   12   then   '十二'     else   substring('一二三四五六七八九十',   month(getda

SQL case when用法

select sum(case when t.lr_date > to_date('2013-12-12','yyyy-mm-dd') and 1=1 then 1 else 0 end) date1sum, sum(case when t.lr_date < to_date('2013-12-13','yyyy-mm-dd') and 1=1 then 1 else 0 end) date2sum, jsxm_code from cj_main t where 1=1 group by js

Oracle CASE WHEN 用法介绍

Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASEWHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 2. CASE WHEN 在语句中不同位置的用法 2.1 SELECT CASE WHEN 用法 SELECT gra

SQL 语句日期用法及函数

SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date

标准SQL语言的用法

原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5/ 标准SQL语言的用法 SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品

CASE函数用法:相当于switch..case:,能够实现等值判断,也可以做范围判断 相当于if...else

--CASE函数用法:--1.相当于switch..case:,能够实现等值判断--语法:--case 字段/表达式 --判断指定折字段或者表达式的值,它不能判断null值,因为null不是一个具体的值-- when 值 then '自定义值'-- when 值 then '自定义值'-- else '前面都不满足的情况'--end--特点:-- 1.会生成一个新列-- 2.then后面的值的类型需要一致select StudentNo,StudentName,case ClassId when

SQL语句的用法

SQL语句的用法 SQL 简介 SELECT DISTINCT WHERE AND OR IN 函数 INCLUDE HAVING 简介 SQL语句教程 SELECT SELECT "列名" FROM "表格名"; 列名可以为多个,该选中的列显示出来 DISTINCT SELECT DISTINCT "列名" FROM "表格名"; 只显示不同的值,重复值不显示,如果有多个列,则每一个列的值都相同时视作相同.如下表,执行sel

SQL Case 语句的使用

-----简单case 使用 select 学号,姓名, case 专业 when '金融系' then '1' when '材料成型及控制工程' then '2' else '3' end from stu SQL Case 语句的使用,布布扣,bubuko.com

Mysql 中的CASE WHEN 用法

在SELECT语句查询中可以使用CASE WHEN对查询出来的结果,进行一个类似于if else的判断. 具体的用法 1. SELECT a.website_id, b.customer_name, a.website_enddate, c.member_name, d.websitetype_id,            CASE                 WHEN d.websitetype_id=1 THEN 400                WHEN d.websitetype