[Oracle整理]CASE-END
说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。
作用:
1可用来进行数据资料行转列的功能
2可用来对数据进行判断,类似decode,但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量数值时,用Decode更为简洁
3以CASE开头,以END结尾 , 分支中WHEN 后跟条件,THEN为显示结果 ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
语法:
Case when expression1 then result1
when expression2 then result2
……
Else result
END
例子
产品每天的销售额
制作销售额报表,通常习惯将日期作为表格的标题。
如何实现?
SELECT product_name,
category_name,
SUM((CASE
WHEN to_char(SALE_date, 'yyyy/mm/dd') = '2011/10/01' THEN sales
ELSE 0
END)) "10/01",
SUM((CASE
WHEN to_char(SALE_date, 'yyyy/mm/dd') = '2011/10/02' THEN sales
ELSE 0
END)) "10/02",
SUM((CASE
WHEN to_char(SALE_date, 'yyyy/mm/dd') = '2011/10/03' THEN sales
ELSE 0
END)) "10/03"
FROM xx_test1
GROUP BY product_name,category_name
DECODE
作用:
1 进行数据资料行转列
语法:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
A Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。
B 当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。
C 事实上,可以给出多个if/then 配对。
D 注意,这里的if、then及else 都可以是函数或计算表达式(加,减,乘,除)。
例子:
1)使用字段
SELECT decode(category_name,'01','Apple','Pear') FROM xx_test1
2)使用计算表达式——加,减,乘,除
SELECT decode(1+1,2,'Apple','Pear') FROM xx_test1;
SELECT decode(1-1,2,'Apple','Pear') FROM xx_test1;
SELECT decode(1*1,2,'Apple','Pear') FROM xx_test1;
SELECT decode(1/1,2,'Apple','Pear') FROM xx_test1;
3)使用函数
SELECT decode(to_char(sysdate,'mon'),'nov','冬月','dec','腊月',to_char(sysdate,'mon')) FROM dual
比较:
相同:
进行数据资料行转列
不同:
1)CaseEnd可以使用所有的表达式;Decode只是可用算术表达式,不可用逻辑表达式(= > < !=)。
2)CaseEnd可以用多个不同的字段来进行判断;Decode只可用一个字段。
3)CaseEnd是sql/92标准的一部分,哪儿都能用,也就是说移植性更强.
4)Decode是Oracle专有的。
5)用Decode方便,简洁;CaseEnd灵活。
应用场景
1) 功能比较简单时,用Decode。因为方便,简洁。
2) 要用表达式的都是CaseEnd。
3) 当Decode满足不了时就用CaseEnd。
转载于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330962.html
[Oracle整理]CASE-END相关推荐
- oracle函数 case,oracle的case函数和case控制结构 (摘)
oracle的case函数和case控制结构 =========================================================== 作者: zhouwf0726(ht ...
- Oracle的CASE语句和表达式
http://space.itpub.net/15203236/viewspace-534849 Oracle的CASE语句和表达式 上一篇 /下一篇 2009-01-09 23:19:46 / 天 ...
- Oracle/PLSQL Case Statement
Oracle/PLSQL: Case Statement In Oracle 9i, you can use the case statement within an SQL statement. I ...
- oracle正整数集,Oracle 整理
[Oracle 整理]的更多相关文章 [Oracle整理]ORA-12705(字符集问题) 2017年5月11日 18:11 [Oracle整理]ORA-12705(字符集问题) 说明:本内容是工 ...
- [数据库] Oracle使用CASE判断解决多值问题
这是最近在使用Oracle数据库时的一个问题,个人认为是一个非常经典的问题.假设现在有一张专业表,包括如下信息: 其中表为:ZY_TAB(ZY_NAME,ZY_CODE,ZY_TYPE,ZY_TIME ...
- Oracle中case when用法
转载自:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html CASE WHEN 表达式有两种形式 --简单Case函数 CA ...
- 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点
异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, ...
- oracle整理笔记
数据库对象: 1.函数(方法): function 2.触发器: trigger 3.表: table 4.索引: index 5.视图: view 6.序列: ...
- jor oracle,[整理]sql语句一些实用技巧for oracle
很久以前看某本书整理的,忘了哪本了,现在贡献出来. 1)在select语句中使用条件逻辑 1 select ename,sal,2casewhen sal<=2000then 'UNDERPAI ...
最新文章
- 如何在cmd命令行中查看、修改、删除与添加环境变量
- 【收藏】Linux系统常用命令速查手册(附赠PDF档)
- DDoS攻防战 (二) :CC攻击工具实现与防御理论
- String 对象内存分配策略
- STL源码剖析 5中迭代器型别
- 科普 | 知识图谱相关的名词解释
- C++ 常用设计模式
- Linux内核的文档管理工具:Sphinx
- Camera--V4L2驱动学习记录
- 计算机组成原理平均cpi怎么算_计算机组成原理(一)
- Yum安装iso光盘中的软件配置
- 安卓数据转移到iphone老是中断_99元1次!iOS、安卓跨系统互传游戏数据:《王者荣耀》角色转移来了...
- 罗马数字 java_java将罗马数字转换成整数算法详解-Fun言
- 雷电模拟器python编程接口_【Python】雷电模拟器说明[附代码]
- 机器学习笔记(一) KNN K-最近邻
- Python全国计算机等级考试(2021)
- 第十五章 IO流(转换流 字符流 字符缓冲流 打印流)
- 涨握在线:美封堵华为5G,遭印企驳斥
- 从CMM的QA到CMMI的PPQA
- golang中从一个日期开始往后增加一段时间
热门文章
- iOS原生CIFilter创建二维码
- HDU 1402 A * B Problem Plus FFT
- 记录android点滴(一)--通过build.prop实现产品定制的方法
- c++中怎么数组内有用元素的个数_前端面试(算法篇) - 数组乱序
- 「声明」本博客自动采集于博客园-niceyoo
- Mac Apache 开启对php支持
- 软件测试个人心得总结
- centos7 编译安装nginx 设置自启动服务 支持https
- MySQL索引知识复习
- ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步