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

2. CASE WHEN 在语句中不同位置的用法

2.1 SELECT CASE WHEN 用法

select g.group_id,g.group_name 产品名称,count(case when uo.operation_type = 1 then 1 else null end) 话费支付总数

,count(case when uo.operation_type = 3 then 1 else null end ) 第三方支付总数

from educloud.edu_group g,educloud.edu_user_order_items it,educloud.edu_user_order uo

where g.group_id = it.group_id and it.user_id = uo.user_id and

it.group_id = uo.group_id and it.state in (1,2,3,4) and it.source = 0

and uo.commit_state =1 and uo.operation_type in (1,3) and

uo.source=0 and g.group_id in (5000014,5000015,5000011,5000010,5000017) group by g.group_id,g.group_name;

2.2 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

2.3 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;

3.关于IF-THEN-ELSE的其他实现

3.1 DECODE() 函数

select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')

from employees;

貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。

3.2 在WHERE中特殊实现

SELECT T2.*, T1.*

FROM T1, T2

WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')

OR

(T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')

这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

case when用法java_Oracle CASE WHEN 用法介绍相关推荐

  1. c语言 case语句用法,switch ... case语句的用法[组图]

    switch ... case语句的用法[组图] 08-13栏目:技术 TAG:switch case语句 switch case语句 当情况大于或等于4种的时候就用switch ...  case语 ...

  2. switch case穿透Java_Java switch的用法与case的穿透现象举例详解

    switch和if-else的用法类似: if(x == 3) { }else if(x == 30) { }else if(x == -6) { }else { }等同于switch的: switc ...

  3. mysql CASE WHEN的基础和多种用法

    CASE 计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果.  ...

  4. case zhen语句_SQL中的条件判断语句(case when zhen if,ifnull)用法

    三.IFNULL(expr1,expr2) 仅适用于mysql 假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2.IFNULL()的返回值是数 ...

  5. case when和select case when的用法

    1.Case具有两种格式.简单Case函数和Case搜索函数 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END - ...

  6. case when then else end的用法

    主要分为两种:简单case函数和搜索case函数 简单case函数 case column when 'A' then 'a' when 'B' then 'b' else 0 end; 搜索case ...

  7. ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. 转 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

    原址如下: http://exceptioneye.iteye.com/blog/1197329 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式.简 ...

  9. MYSQL查询之count(1)与max (case when then else end)用法小结

    一.count(1)用法 1 问题:查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 2,表格:见Mysql的select多表查询嵌套二 3,代码: SELECT student.s_id,s ...

最新文章

  1. 看固态存储厂商在硝烟四起的市场中如何发展?
  2. linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf)
  3. Zookeeper源码用ant进行编译为eclipse工程--转载
  4. DataSource--DBCP--C3P0--DBUtils
  5. QT乱码总结1.Unicode 和 UTF-8
  6. php-ast 开源,PHP AST学习 - osc_ryjlu6z2的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 有些道理经历过就是道理,没经历过可能就是心灵鸡汤。
  8. Python删除文件夹和建立文件夹
  9. vivado fpga最最简单的入门--led闪烁 创建工程+代码输入+添加引脚约束完整具体流程
  10. Android 应用开发(第四章)---手机海外市场移动应用
  11. 光物联成物联网新热点
  12. 判断两个IP大小关系及是否在同一个网段中
  13. linux 下tomcat catalina.out日志操作
  14. dede自定义内容模型会员投稿显示不了
  15. Ample Sound Ample Guitar Semi Hollow Mac - 半空心体式吉他
  16. 走一条硬件工程师的道路
  17. 算法设计与分析——prim算法
  18. java中三个基本框架_javaweb框架主要的三大基本框架是哪些?作用分别是什么?...
  19. 金融经济学期末梳理(王江)第七章 风险厌恶程度度量
  20. SUMIFS函数 、MATCH及INDEX函数

热门文章

  1. MediaCodec在Android视频硬解码组件的应用
  2. 解决cookie跨域访问
  3. C++学习笔记35:函数模板
  4. 【KVM】Ubuntu14.04 安装KVM
  5. tamper绕WAF小结
  6. C#向C++编写的DLL传递字符串参数的办法
  7. WindowsPhone8游戏开发字体国际化化
  8. 八个最好的开源机器学习框架和库
  9. 对于指针传入函数,却最终没有改变指针的值的问题
  10. android ota 版本校验,OTA升级签名校验简析