`
lpm528
  • 浏览: 83461 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

sql语句 case的两种用法

 
阅读更多
select empno,ename,
       case job
          when 'PRESIDENT' THEN '总裁'
          when 'MANAGER'  THEN '经理'
          else '打杂的'
       end
from emp


select empno,ename,
       case when SAL>=4000 THEN '有钱'
               when SAL>2500 and SAL<4000 then '中等'
               else '贫困'
       end
from emp

 实例演示:

  (1)查询表users中的数据。

  select u.id,u.realname,U.SEX from users u;

  查询结果如下

  ID    REALNAME SEX
  1  10082 松XX
  2  10084 林XX     1
  3  10087 西XX
  4  10100 胡XX
  5  10102 龙XX     1
  ......

  (2)上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用CASE语句。

select u.id,u.realname,U.SEX,
  ( case u.sex
  when 1 then '男'
  when 2 then '女'
  else '空的'
  END
  ) 性别
from users u;

 

 

select u.id,u.realname,U.SEX,
  ( case u.sex
  when 1 then '男'
  when 2 then '女'
  else '空的'
  END
  ) 性别
from users u;

 

  查询结果

  ID    REALNAME SEX  性别
  1 10082 松XX         空的
  2 10084 林XX     1   男
  3 10087 西XX         空的
  4 10100 胡XX         空的
  5 10102 龙XX     1   男
  ......

  如果不希望列表中出现"sex"列,语句如下

select u.id,u.realname,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;

 

 

select u.id,u.realname,
( case u.sex
when 1 then '男'
when 2 then '女'
else '空的'
END
) 性别
from users u;

 

  (3)将sum与case结合使用,可以实现分段统计。

  例如现在我希望将上表中各种性别的人数进行统计,sql语句如下

select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u;

 

 

select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u;

 

  执行结果如下

  男性  女性  性别为空
  1 41    15   0

  如果学校内有数千名学生进行了考试,想统计60分以下、60-80分、80-100分的总人数,就可以使用这样的语句来实现。只是条件不同而已。

  (4)如果sum、case when结合group by使用,可以进行分组分段统计。

  如,我希望统计users表中每个创建者创建的男性、女性、无性别的用户总数(数据表中有一个字段creator_id,表示创建者的ID),语句如下

select u.creator_id 创建者ID,
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u
group by u.creator_id;

 

 

select u.creator_id 创建者ID,
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u
group by u.creator_id;

 

  查询结果如下

  创建者ID 男性 女性 性别为空
  1          0    0   0
  2 10000    35   12  0
  3 11100    0    0   0
  4 11060    0    0   0
  5 11040    0    0   0
  6 11080    2    0   0
  7 10281    3    3   0
  8 10580    1    0   0

  上例中只有一个分组字段,实现了1级统计;如果有多个分组字段,应该可以实现多级统计了。如有居民统计表,保存了人口信息、人口所在市、区、街道信息等,欲统计深圳市的人口数据,实现统计如下统计结果的话,就可以通过多级分组实现。

  区划    男性居民     女性居民
  深圳市            
  南山区           
  粤海           
  科技           
  宝安区           
  新安           

  (5)case when的语法

CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END
 

 

 

CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END

分享到:
评论

相关推荐

    SQL中Case语句用法讨论_BJ

    `Case`语句有两种基本形式:简单`Case`表达式和搜索`Case`表达式。 #### 一、简单`Case`表达式 简单`Case`表达式通常用于基于列值的条件判断,其语法结构如下: ```sql CASE WHEN &lt;condition1&gt; THEN WHEN ...

    SQL中case语法的使用

    ### SQL中的Case语法使用详解 在SQL查询语言中,`CASE`语句是一个非常重要的功能,它可以用来构建复杂的条件逻辑,实现对数据的灵活处理。...希望本文能够帮助大家更好地理解和掌握`CASE`语句的使用方法。

    sql中的case用法

    SQL 中 Case 语句有两种格式:简单 Case 函数和 Case 搜索函数。这两种格式可以实现相同的功能,但是它们的写法和功能方面有一些限制。 简单 Case 函数的写法相对比较简洁,例如: ``` CASE sex WHEN '1' THEN '男...

    sql中case语句的用法浅谈

    SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 代码如下:–简单Case函数 CASE sex  WHEN ‘1’ THEN ‘男’  WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ...

    CASE的用法 (Transact-SQL)

    ### CASE的用法 (Transact-SQL) #### 概述 `CASE` 是 Transact-SQL 中一个非常重要的关键字,用于根据不同的条件返回不同的结果。它支持两种主要的格式:简单表达式和搜索表达式。这两种格式都能有效地帮助开发者...

    经典SQL语句大全

    两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时...

    SQLsevrer CASE用法

    `CASE` 表达式有两种主要形式:简单 `CASE` 和搜索 `CASE`。 #### 简单 CASE 表达式 简单 `CASE` 表达式基于一个表达式(通常是列或变量),并根据该表达式的值来决定返回哪个结果。其语法如下: ```sql CASE ...

    浅析SQL语句行列转换的两种方法 case…when与pivot函数的应用

    本文将详细探讨两种实现这一转换的方法:`CASE...WHEN` 和 `PIVOT` 函数,通过具体的示例来解析它们的用法。 1. `CASE...WHEN` 用法 `CASE...WHEN` 语句是一种条件判断语句,常用于在SQL查询中根据特定条件返回不同...

    SQL语句强化练习题

    最后,针对查询各科成绩在80分以上的学生,可以使用以下两种方法: 方法1: ```sql SELECT name, kc_name, kc_score FROM 表 WHERE kc_score &gt;= 80; ``` 方法2: ```sql SELECT * FROM ( SELECT name, '语文' AS ...

    mysql存储过程之case语句用法实例详解

    CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要用于比较一个表达式(case_expression)与一系列预定义的值(when_expression)。基本语法如下: ```sql CASE case_...

    精秒sql语句

    "精妙SQL语句"这个资源集合,显然是一个针对SQL特殊用法和技巧的整理,对于学习和复习SQL知识非常有帮助。 1. **SQL基础概念** - **SELECT语句**:SQL的核心是查询数据,SELECT语句用于从表中选取数据。可以指定...

    sql判断语句.txt

    根据给定文件的信息,本文将深入探讨SQL中的判断语句,特别是CASE表达式的使用方法及其在实际场景中的应用。此外,我们还将分析不同类型的CASE语句,并通过具体例子来加深理解。 ### SQL中的CASE表达式 #### CASE...

    浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

    在本篇中,我们将深入探讨两种实现SQL语句行列转换的方法:`CASE...WHEN` 语句和 `PIVOT` 函数,并通过具体的示例来说明它们的应用。 首先,我们创建了一个名为 `tmp` 的数据库,并在其中创建了一张名为 `Scores` ...

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    本文将深入探讨这两种转换方法,并提供具体的 SQL 语句示例,以及创建示例表结构的 SQL 代码。 ### 1. 行转列(Pivot) 行转列是将数据表中的某些行转换为列,以便更直观地呈现数据。在 MySQL 中,没有内置的 ...

    sql语句及使用的快速入门

    SQL语句是根据特定的数据操作需求,使用SQL语法编写的语句。在本文中,我们将快速入门SQL语句的编写与应用,同时简单回顾SQL的发展历程及其前景。 1. SQL语言基础 SQL包含多种语句,用于执行数据库的各种操作。常见...

    sql case when exists not exists in not in

    这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `CASE WHEN` 是SQL中的一个条件表达式,允许我们根据不同的条件返回不同的结果值。基本语法结构如下: ```sql CASE WHEN 条件1 ...

    SQL语句定义动态列头

    本文将详细介绍如何通过SQL语句实现数据表中的动态行转列操作,并针对不同的数据库版本(SQL Server 2000与SQL Server 2005)提供具体的实现方法。此技术常用于处理报表或统计分析等场景中,尤其是当需要展示的数据...

    详细解析 mysql 中的 case when 语句的使用

    ### MySQL中的Case When语句详解 ...此外,`CASE WHEN`还可以与其他SQL语句结合使用,比如聚合函数、子查询等,以满足更复杂的业务需求。希望本文能帮助你更好地理解和使用MySQL中的`CASE WHEN`语句。

    MySQL的SQL语句大小写不敏感问题解决方案

    MySQL 的 SQL 语句大小写不敏感问题是一个普遍存在的问题,特别是在 Linux 和 Windows 两种操作系统下。这个问题的产生是由于 MySQL 在不同的操作系统下对大小写的处理规则不同。在 Linux 下,数据库名、表名、列名...

Global site tag (gtag.js) - Google Analytics