case when用法java_Oracle CASE WHEN 用法介绍
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 用法介绍相关推荐
- c语言 case语句用法,switch ... case语句的用法[组图]
switch ... case语句的用法[组图] 08-13栏目:技术 TAG:switch case语句 switch case语句 当情况大于或等于4种的时候就用switch ... case语 ...
- switch case穿透Java_Java switch的用法与case的穿透现象举例详解
switch和if-else的用法类似: if(x == 3) { }else if(x == 30) { }else if(x == -6) { }else { }等同于switch的: switc ...
- mysql CASE WHEN的基础和多种用法
CASE 计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果. ...
- case zhen语句_SQL中的条件判断语句(case when zhen if,ifnull)用法
三.IFNULL(expr1,expr2) 仅适用于mysql 假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2.IFNULL()的返回值是数 ...
- case when和select case when的用法
1.Case具有两种格式.简单Case函数和Case搜索函数 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END - ...
- case when then else end的用法
主要分为两种:简单case函数和搜索case函数 简单case函数 case column when 'A' then 'a' when 'B' then 'b' else 0 end; 搜索case ...
- ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- 转 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
原址如下: http://exceptioneye.iteye.com/blog/1197329 ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 Case具有两种格式.简 ...
- MYSQL查询之count(1)与max (case when then else end)用法小结
一.count(1)用法 1 问题:查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 2,表格:见Mysql的select多表查询嵌套二 3,代码: SELECT student.s_id,s ...
最新文章
- 看固态存储厂商在硝烟四起的市场中如何发展?
- linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf)
- Zookeeper源码用ant进行编译为eclipse工程--转载
- DataSource--DBCP--C3P0--DBUtils
- QT乱码总结1.Unicode 和 UTF-8
- php-ast 开源,PHP AST学习 - osc_ryjlu6z2的个人空间 - OSCHINA - 中文开源技术交流社区...
- 有些道理经历过就是道理,没经历过可能就是心灵鸡汤。
- Python删除文件夹和建立文件夹
- vivado fpga最最简单的入门--led闪烁 创建工程+代码输入+添加引脚约束完整具体流程
- Android 应用开发(第四章)---手机海外市场移动应用
- 光物联成物联网新热点
- 判断两个IP大小关系及是否在同一个网段中
- linux 下tomcat catalina.out日志操作
- dede自定义内容模型会员投稿显示不了
- Ample Sound Ample Guitar Semi Hollow Mac - 半空心体式吉他
- 走一条硬件工程师的道路
- 算法设计与分析——prim算法
- java中三个基本框架_javaweb框架主要的三大基本框架是哪些?作用分别是什么?...
- 金融经济学期末梳理(王江)第七章 风险厌恶程度度量
- SUMIFS函数 、MATCH及INDEX函数