`

Oracle CASE WHEN 用法介绍

 
阅读更多

 case when的语法:

 CASE

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

示例:

(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
  ......查询结果

 

  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;

 

 

 

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

 

select u.id,u.realname,U.SEX,
  ( 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;

 执行结果如下

 

 

  男性  女性  性别为空
  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

 查询结果如下

 

 

  创建者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级统计;如果有多个分组字段,应该可以实现多级统计了。如有居民统计表,保存了人口信息、人口所在市、区、街道信息等,欲统计深圳市的人口数据,实现统计如下统计结果的话,就可以通过多级分组实现。

 

  区划    男性居民     女性居民
  深圳市             
  南山区            

  粤海            
  科技            
  宝安区            
  新安            

分享到:
评论

相关推荐

    oracle case when 语句的用法详解

    1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex ... CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 代码如下:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位

    Oracle_case_when_用法

    ### Oracle CASE WHEN 用法详解 #### 一、概述 在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`...

    Oracle中的SUM用法讲解

    在Oracle中,SUM函数可以结合CASE WHEN语句,使得条件求和变得更为灵活。 1. SUM与CASE WHEN结合使用 在描述的示例1中,我们看到了一个查询,它根据`AREA_CODE`字段对数据进行分组,并计算出`IPTV_NBR`和`ACC_NBR`...

    oracle中substr函数详细用法

    本文将详细介绍这两个函数的用法,并结合`CASE WHEN`语句来解决特定的问题。 `SUBSTR`函数用于从一个字符串中提取指定长度的子字符串。它有两种形式: 1. `SUBSTR(string, start_position, length)` 这种形式从`...

    oracle中游标的使用

    Oracle 中游标的使用 Oracle 中的游标(Cursor)是一种重要的数据库对象,它允许开发者在 SQL 语句中处理大量数据。游标的使用可以将复杂的数据处理过程简化,使得开发效率和代码可读性提高。下面将对 Oracle 中游...

    ORACLE 列转行 DECODE函数用法

    在实际工作中,你可能还需要结合其他SQL函数,如CASE WHEN或NVL,来进一步增强DECODE的功能。例如,当你需要处理可能的NULL值时,NVL函数可以提供一个默认值,防止因NULL而导致的结果异常。 总之,Oracle的DECODE...

    Mysql+Oracle函数文档

    5. **控制流程函数**:如 `IF()`, `CASE WHEN THEN`,实现条件判断和逻辑操作。 接下来,Oracle 数据库是企业级的 DBMS,提供了更丰富的特性和更强大的性能。在 "oracle函数大全(分类显示).chm" 文档中,我们可以...

    oracle PLSQL结构控制语句

    在本篇文章中,我们将详细介绍 Oracle PL/SQL 结构控制语句的使用方法和示例。 一、分支结构 分支结构是最基本的程序结构,用于根据条件改变程序的逻辑流程。PL/SQL 中的分支结构是通过 IF 语句实现的。IF 语句的...

    Oracle SQLServer行列转换

    - **CASE语句**: Oracle和SQLServer的`CASE`语句在语法上有所不同,Oracle使用`WHEN`条件后面直接跟表达式,而SQLServer则是在`WHEN`后面直接跟条件。 - **PIVOT操作**: Oracle和SQLServer的`PIVOT`语法也存在细微...

    SQLServer和Oracle的常用函数

    - SQL Server的`IIF()`是三元运算符的简化形式,Oracle没有直接对应,但可以用`CASE WHEN THEN END`模拟。 7. **系统信息函数** - SQL Server的`@@IDENTITY`获取最后一个插入的ID,Oracle使用`LAST_INSERT_ID()`...

    oracle ebs开发文档

    #### 一、Oracle EBS 基础知识介绍 **Oracle EBS (Enterprise Business Suite)** 是一套全面的企业管理软件解决方案,它提供了包括财务、供应链、人力资源等多个领域的功能模块。对于初学者来说,了解 Oracle EBS 的...

    几个常用的Oracle函数及实例运用

    SELECT CASE WHEN LENGTH(o.f_nodecode) &gt; 8 THEN SUBSTR(o.f_nodecode, 1, 8) ELSE o.f_nodecode END f_nodecode FROM orgaizeation o WHERE o.f_id = 23 ) b ON a.f_nodecode = b.f_nodecode ORDER BY b.f_...

    oracle 的常用函数

    接下来,本文将详细介绍Oracle中常用的几类函数及其具体应用,帮助读者更好地掌握这些功能强大的工具。 ### 一、字符串函数 #### 1.1 `UPPER` 和 `LOWER` 用于将字符串转换为大写或小写。 - **语法**: - `UPPER...

    Oracle的几个Function实例

    在"Oracle的几个Function实例"这个主题中,我们将探讨一些常见的Oracle函数,并通过实际示例来理解它们的用法。 1. ** NVL 函数**: NVL函数用于处理空值(NULL)。如果一个字段的值为NULL,NVL函数会将其替换为你...

    oracle触发器

    通过以上介绍,我们可以看到Oracle触发器的强大功能和灵活性,它能够帮助我们实现复杂的业务逻辑,确保数据的完整性和安全性。然而,合理设计和管理触发器也非常重要,不当的使用可能会导致性能问题或难以调试的错误...

    Oracle_SQL_Reference

    - **条件表达式**:如CASE WHEN THEN ELSE END,用于根据条件返回不同的结果。 #### 四、Oracle SQL 特色功能 - **PL/SQL**:一种过程化语言,用于扩展SQL的功能,支持复杂的逻辑处理和编程。 - **SQL*Plus**:...

    oracle 内置函数大全

    - `CASE WHEN condition THEN result [ELSE else_result] END`:根据条件返回不同的结果。 6. **聚合函数**: - `COUNT(*)`:计算行数。 - `SUM(column)`:计算列的总和。 - `AVG(column)`:计算列的平均值。 ...

    Oracle 10g SQL和PL/SQL编程指南 配套程序

    Oracle 10g SQL与PL/SQL编程指南是数据库管理员和开发者的重要参考资料,它深入浅出地介绍了如何在Oracle 10g环境中进行高效的数据库管理和应用程序开发。这本书由杨忠民、蒋新民和晁阳三位专家联合编著,由清华大学...

Global site tag (gtag.js) - Google Analytics