说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于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相关推荐

  1. oracle函数 case,oracle的case函数和case控制结构 (摘)

    oracle的case函数和case控制结构 =========================================================== 作者: zhouwf0726(ht ...

  2. Oracle的CASE语句和表达式

    http://space.itpub.net/15203236/viewspace-534849 Oracle的CASE语句和表达式 上一篇 /下一篇  2009-01-09 23:19:46 / 天 ...

  3. Oracle/PLSQL Case Statement

    Oracle/PLSQL: Case Statement In Oracle 9i, you can use the case statement within an SQL statement. I ...

  4. oracle正整数集,Oracle 整理

    [Oracle 整理]的更多相关文章 [Oracle整理]ORA-12705(字符集问题)   2017年5月11日 18:11 [Oracle整理]ORA-12705(字符集问题) 说明:本内容是工 ...

  5. [数据库] Oracle使用CASE判断解决多值问题

    这是最近在使用Oracle数据库时的一个问题,个人认为是一个非常经典的问题.假设现在有一张专业表,包括如下信息: 其中表为:ZY_TAB(ZY_NAME,ZY_CODE,ZY_TYPE,ZY_TIME ...

  6. Oracle中case when用法

    转载自:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html CASE WHEN 表达式有两种形式 --简单Case函数 CA ...

  7. 表的转置 行转列: DECODE(Oracle) 和 CASE WHEN 的异同点

    异同点 都可以对表行转列: DECODE功能上和简单Case函数比较类似,不能像Case搜索函数一样,进行更复杂的判断 在Case函数中,可以使用BETWEEN, LIKE, IS NULL, IN, ...

  8. oracle整理笔记

    数据库对象: 1.函数(方法):     function 2.触发器:     trigger 3.表:     table 4.索引:     index 5.视图:     view 6.序列: ...

  9. jor oracle,[整理]sql语句一些实用技巧for oracle

    很久以前看某本书整理的,忘了哪本了,现在贡献出来. 1)在select语句中使用条件逻辑 1 select ename,sal,2casewhen sal<=2000then 'UNDERPAI ...

最新文章

  1. 如何在cmd命令行中查看、修改、删除与添加环境变量
  2. 【收藏】Linux系统常用命令速查手册(附赠PDF档)
  3. DDoS攻防战 (二) :CC攻击工具实现与防御理论
  4. String 对象内存分配策略
  5. STL源码剖析 5中迭代器型别
  6. 科普 | 知识图谱相关的名词解释
  7. C++ 常用设计模式
  8. Linux内核的文档管理工具:Sphinx
  9. Camera--V4L2驱动学习记录
  10. 计算机组成原理平均cpi怎么算_计算机组成原理(一)
  11. Yum安装iso光盘中的软件配置
  12. 安卓数据转移到iphone老是中断_99元1次!iOS、安卓跨系统互传游戏数据:《王者荣耀》角色转移来了...
  13. 罗马数字 java_java将罗马数字转换成整数算法详解-Fun言
  14. 雷电模拟器python编程接口_【Python】雷电模拟器说明[附代码]
  15. 机器学习笔记(一) KNN K-最近邻
  16. Python全国计算机等级考试(2021)
  17. 第十五章 IO流(转换流 字符流 字符缓冲流 打印流)
  18. 涨握在线:美封堵华为5G,遭印企驳斥
  19. 从CMM的QA到CMMI的PPQA
  20. golang中从一个日期开始往后增加一段时间

热门文章

  1. iOS原生CIFilter创建二维码
  2. HDU 1402 A * B Problem Plus FFT
  3. 记录android点滴(一)--通过build.prop实现产品定制的方法
  4. c++中怎么数组内有用元素的个数_前端面试(算法篇) - 数组乱序
  5. 「声明」本博客自动采集于博客园-niceyoo
  6. Mac Apache 开启对php支持
  7. 软件测试个人心得总结
  8. centos7 编译安装nginx 设置自启动服务 支持https
  9. MySQL索引知识复习
  10. ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步