`
Luob.
  • 浏览: 1592540 次
  • 来自: 上海
社区版块
存档分类
最新评论

Oralce Case When的用法

阅读更多
--简单Case函数  

CASE sex  
WHEN '1' THEN '男'  
WHEN '2' THEN '女'  
ELSE '其他' END  

--Case搜索函数  

CASE
WHEN sex = '1' THEN '男'  
WHEN sex = '2' THEN '女'  
ELSE '其他' END

--Select Case When
SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
                       ELSE NULL
                       END) 男生数,
                COUNT (CASE WHEN sex = 2 THEN 1
                       ELSE NULL
                       END) 女生数
    FROM students GROUP BY grade;


--Where Case When
SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                   T1.SOME_TYPE LIKE 'NOTHING%'
                THEN 1
              WHEN T2.COMPARE_TYPE != 'A' AND
                   T1.SOME_TYPE NOT LIKE 'NOTHING%'
                THEN 1
              ELSE 0
           END) = 1


--Group by Case When
SELECT  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END salary_class, -- 别名命名
COUNT(*)  
FROM    Table_A  
GROUP BY  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END;


---统计 count 和 distinct 的使用
select t1.*,t2.* from (select 2013-09 vtime,
		count(case when adid=9058 then id else null end) ytznum,
		count(case when adid=9059 then id else null end) jtznum,
		count(distinct(case when adid=9058 then ip else null end)) yipnum,
		count(distinct(case when adid=9059 then ip else null end)) jipnum
		from v_user_store where createtime >= to_date('2013-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss') and createtime <=  to_date('2013-09-30 23:59:59','yyyy-mm-dd hh24:mi:ss') 
		) t1 ,
		(select 2013-09 otime,
		count(case when adid=9058 then 1 else null end) yordernum,
		count(case when adid=9059 then 1 else null end) jordernum,
		sum(case when adid=9058 then costs else 0 end) yordercost,
		sum(case when adid=9059 then costs else 0 end) jordercost,
		decode(count(case when adid=9058 then 1 else null end),0,0,round((sum(case when adid=9058 then costs else 0 end) / count(case when adid=9058 then 1 else null end)),2)) yavgcost,
		decode(count(case when adid=9059 then 1 else null end),0,0,round((sum(case when adid=9059 then costs else 0 end) / count(case when adid=9059 then 1 else null end)),2)) javgcost
		from v_order2
		where status <> 2 and ordertime >=  to_date('2013-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss') and ordertime <=  to_date('2013-09-30 23:59:59','yyyy-mm-dd hh24:mi:ss') ) t2  order by t2.otime 





分享到:
评论

相关推荐

    Oracle_case_when_用法

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

    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中的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 SQLServer行列转换

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

    oracle PLSQL结构控制语句

    CASE 语句适用于分情况的多分支处理,可以有以下三种用法: 1. 基本 CASE 结构语句的语法如下: ```sql CASE 选择变量名 WHEN 表达式 1 THEN 语句序列 1 WHEN 表达式 2 THEN 语句序列 2 WHEN 表达式 n THEN 语句...

    SQLServer和Oracle的常用函数

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

    几个常用的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的几个Function实例

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

    oracle 的常用函数

    - `SELECT CASE WHEN 1 = 1 THEN 'True' ELSE 'False' END FROM dual;` 返回 `'True'` ### 总结 以上列举了Oracle数据库中常见的几种函数类型及其典型应用场景。熟练掌握这些函数不仅能够提高编写SQL语句的速度和...

    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触发器

    ### Oracle触发器详解 在Oracle数据库管理中,触发器是一种非常强大的工具,它允许你在特定的数据库事件(如数据插入、更新或删除)发生时自动执行预定义的SQL语句或PL/SQL代码块。这使得数据库能够在无需外部程序...

    oracle常用函数全集

    根据提供的Oracle相关知识点,我们可以详细地探讨一下这些重要的Oracle函数及其用法,这对于数据库管理和查询都是非常有帮助的。 ### 1. CASE 表达式 CASE 表达式是一种非常有用的工具,它允许我们在SQL查询中进行...

    oracle触发器案例

    以上案例展示了 Oracle 触发器的一些基本用法和应用场景,包括但不限于数据安全性控制、数据审计跟踪以及业务规则实施等方面。通过这些示例,我们可以更好地理解和掌握触发器的设计与编写技巧。

Global site tag (gtag.js) - Google Analytics