`
bada130
  • 浏览: 39324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[Oracle] case when例子

阅读更多
     -- 每月入职人数统计
     CASE WHEN 条件1 THEN 结果1 
          WHEN 条件2 THEN 结果2
          ELSE 结果N END AS ALIAS 
     -- 方法一  
     SELECT CASE WHEN TO_CHAR(HIREDATE, 'MM') = '01' THEN 1 END AS "1月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '02' THEN 1 END AS "2月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '03' THEN 1 END AS "3月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '04' THEN 1 END AS "4月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '05' THEN 1 END AS "5月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '06' THEN 1 END AS "6月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '07' THEN 1 END AS "7月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '08' THEN 1 END AS "8月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '09' THEN 1 END AS "9月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '10' THEN 1 END AS "10月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '11' THEN 1 END AS "11月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '12' THEN 1 END AS "12月"
       FROM SCOTT.EMP;
     SELECT COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '01' THEN 1 END) AS "1月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '02' THEN 1 END) AS "2月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '03' THEN 1 END) AS "3月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '04' THEN 1 END) AS "4月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '05' THEN 1 END) AS "5月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '06' THEN 1 END) AS "6月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '07' THEN 1 END) AS "7月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '08' THEN 1 END) AS "8月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '09' THEN 1 END) AS "9月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '10' THEN 1 END) AS "10月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '11' THEN 1 END) AS "11月"
          , COUNT(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '12' THEN 1 END) AS "12月"
       FROM SCOTT.EMP;         
     -- 方法二  
     SELECT CASE WHEN TO_CHAR(HIREDATE, 'MM') = '01' THEN 1 ELSE 0 END AS "1月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '02' THEN 1 ELSE 0 END AS "2月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '03' THEN 1 ELSE 0 END AS "3月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '04' THEN 1 ELSE 0 END AS "4月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '05' THEN 1 ELSE 0 END AS "5月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '06' THEN 1 ELSE 0 END AS "6月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '07' THEN 1 ELSE 0 END AS "7月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '08' THEN 1 ELSE 0 END AS "8月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '09' THEN 1 ELSE 0 END AS "9月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '10' THEN 1 ELSE 0 END AS "10月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '11' THEN 1 ELSE 0 END AS "11月"
          , CASE WHEN TO_CHAR(HIREDATE, 'MM') = '12' THEN 1 ELSE 0 END AS "12月"
       FROM SCOTT.EMP;
     SELECT SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '01' THEN 1 ELSE 0 END) AS "1月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '02' THEN 1 ELSE 0 END) AS "2月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '03' THEN 1 ELSE 0 END) AS "3月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '04' THEN 1 ELSE 0 END) AS "4月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '05' THEN 1 ELSE 0 END) AS "5月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '06' THEN 1 ELSE 0 END) AS "6月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '07' THEN 1 ELSE 0 END) AS "7月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '08' THEN 1 ELSE 0 END) AS "8月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '09' THEN 1 ELSE 0 END) AS "9月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '10' THEN 1 ELSE 0 END) AS "10月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '11' THEN 1 ELSE 0 END) AS "11月"
          , SUM(CASE WHEN TO_CHAR(HIREDATE, 'MM') = '12' THEN 1 ELSE 0 END) AS "12月"
       FROM SCOTT.EMP;  

 

  • 大小: 5.6 KB
  • 大小: 1.6 KB
  • 大小: 6.6 KB
分享到:
评论

相关推荐

    oracle where case when where后面跟case when

    在这个例子中,`CASE WHEN`语句检查平均薪资是否为`NULL`,如果不是,则使用平均薪资作为比较值;如果是`NULL`,则使用0。 结合提供的链接,我们可以推测博客可能讨论了如何在实际开发或工具使用中应用这种技术,...

    oracle case语句的介绍

    在这个例子中,我们使用了 CASE 语句来对 `sex` 字段进行条件判断。当 `sex` 的值为 1 时,表示男生,此时 CASE 语句返回 1;当 `sex` 的值为 2 时,表示女生,同样 CASE 语句返回 1;其他情况下 CASE 语句返回 NULL...

    Oracle用decode函数或CASE-WHEN实现自定义排序

    例如,当你需要按照特定顺序(如自定义的字母顺序或数值顺序)对非数字字段进行排序时,可以借助`DECODE`函数或`CASE-WHEN`语句来实现自定义排序。下面将详细介绍这两种方法。 1. **DECODE函数** Oracle的`DECODE`...

    ORACLE多条件统计查询的简单方法

    在性能优化方面,虽然在这个特定的例子中,由于数据量不大,优化前后的性能差异可能不明显,但使用`CASE`语句确实极大地减少了代码量,提高了可读性。由于避免了大量的IF逻辑,理论上也降低了查询的复杂度,对于大...

    oracle存储过程例子

    除此之外,Oracle存储过程还可以包含流程控制语句(如IF-THEN-ELSE, CASE, LOOP)、异常处理(EXCEPTION)和变量声明,使其功能更加丰富和灵活。在进行数据库优化时,存储过程是常用的技术手段之一,能够有效提升...

    oracle行列转换的例子

    在Oracle数据库中,可以通过使用CASE WHEN语句来实现这一转换。具体步骤如下: 1. **定义基础查询**:首先,定义一个基本的SELECT查询语句,包括所需的聚合函数SUM和CASE WHEN结构。 2. **构建动态SQL**:由于我们...

    Oracle-Decode()函数和CASE语句的比较

    Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...

    oracle 存储过程语法例子

    总结,这个例子中展示了Oracle存储过程的基本结构,包括包的创建、过程的定义、游标的使用、条件判断、动态SQL以及异常处理。这些都是在Oracle数据库环境中编写高级逻辑和数据操作时不可或缺的技能。通过理解和实践...

    Oracle case函数使用介绍

    Oracle CASE 函数是 SQL 查询中的一个非常有用的表达式,它允许根据特定条件返回不同的值。在给定的示例中,CASE 函数被用来为 `students` 表中的 `grade` 列设置合适的等级,基于学生的 `current_credits`。 首先...

    oracle系列教程三+oracle复杂SQL语句.doc

    其次,`CASE`语句在Oracle SQL中用于条件判断和数据转换。它有多种形式,例如: 1. `CASE WHEN`条件表达式:可以用来根据不同的条件返回不同的结果。例如: ```sql SELECT CASE WHEN substr(to_char(SYSDATE,...

    Oracle Sql 性能优化

    4、CASE 表达式WHEN…… CASE 表达式 WHEN THEN…比 CASE WHEN 表达式 THEN… 效率要高(没有验证过) 5、删除重复记录: 最高效的删除重复记录方法 ( 因为使用了ROWID)例子: DELETE FROM EMP E WHERE E.ROWID > ...

    Oracle中SQL语句行列之间相互转换

    本文将详细介绍Oracle中如何进行行列转换,并提供实际的例子。 #### 一、列转行(Pivot to Unpivot) ##### 1.1 基本概念 在某些情况下,原始数据是以列的形式存储的,但我们需要将其转换为行以便于进一步分析或...

    oracle 面试题经典

    根据提供的文件内容,我们可以归纳总结出以下几个Oracle面试中的经典知识点: ...这些例子覆盖了数据汇总、条件选择以及日期处理等多个方面,对于准备Oracle面试的求职者来说是非常有价值的练习题目。

    [数据库] Oracle单表查询总数及百分比和数据横向纵向连接1

    总的来说,Oracle数据库提供了丰富的SQL工具和函数,如`GROUP BY`、`CASE WHEN THEN`、`ratio_to_report()`以及不同的连接方式,以满足各种查询需求。理解并熟练掌握这些工具,对于进行高效的数据分析和报表制作至关...

    oracle一些常用函数笔记和简单例子

    ### Oracle 常用函数及简单示例 Oracle 数据库提供了丰富的内置函数,这些函数能够帮助用户高效地处理数据、格式化输出等。本文将基于提供的部分内容介绍一些常用的 Oracle 函数及其应用示例。 #### 日期时间转换...

    oracle实现多字段匹配一个关键字查询(本人亲测,没毛病)

    ### Oracle实现多字段匹配一个关键字查询 在Oracle数据库中,有时我们需要从多个字段中...无论是简单的字符串连接操作符`||`、CONCAT函数,还是使用WITH子句或CASE WHEN语句,都能有效地解决多字段关键字匹配的问题。

    ORACLE 10g 的行列转换(学生科目成绩)测试题

    MAX(CASE WHEN subject = 'English' THEN score ELSE NULL END) AS English, MAX(CASE WHEN subject = 'Science' THEN score ELSE NULL END) AS Science FROM student_scores GROUP BY student_id ``` 这种方法...

    Oracle SQLServer行列转换

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

    Oracle时间区间段合并.pdf

    CASE WHEN MAX(END_TIM) OVER (PARTITION BY ID ORDER BY BEG_TIM ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) >= BEG_TIM THEN 0 ELSE 1 END AS F ``` 2. `SUM()`窗口函数: 对于每个`ID`,按照`BEG_...

Global site tag (gtag.js) - Google Analytics