[Oracle整理]CASE-END

说明:本内容是工作用到的知识点整理,来自工作中和网络。
代码于Oracle9上测试。

 

作用:

1可用来进行数据资料行转列的功能

2可用来对数据进行判断,类似decode,但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量数值时,用Decode更为简洁

3CASE开头,以END结尾分支中WHEN 后跟条件,THEN为显示结果 ELSE 为除此之外的默认情况,类似于高级语言程序中switch casedefault,可以不加

语法:

Case when  expression1 then result1

     when  expression2 then  result2

     ……

     Else  result

END

例子

产品每天的销售额

clip_image002

制作销售额报表,通常习惯将日期作为表格的标题。

clip_image004

如何实现?

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的值为if1Decode 函数的结果是then1;如果value等于if2Decode函数结果是then2;等等。

C 事实上,可以给出多个if/then 配对。

D 注意,这里的ifthenelse 都可以是函数计算表达式(加,减,乘,除)。

例子:

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)CaseEndsql/92标准的一部分,哪儿都能用,也就是说移植性更强.

4)DecodeOracle专有的。

5)Decode方便,简洁;CaseEnd灵活。

应用场景

1)        功能比较简单时,Decode。因为方便,简洁。

2)        要用表达式的都是CaseEnd

3)        Decode满足不了时就用CaseEnd

转载于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330962.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 线程手册 第三章 使用线程 Monitor.TryEnter()

Monitor 类的TryEnter() 方法在尝试获取一个对象上的显式锁方面和 Enter() 方法类似。然而&#xff0c;它不像Enter()方法那样会阻塞执行。如果线程成功进入关键区域那么TryEnter()方法会返回true. TryEnter()方法的三个重载方法中的两个以一个timeout类型值作为参数&#xff0…

pycharm不同py文件共享参数_PyCharm安装笔记

1. 介绍1.1 介绍今天福哥带着大家学习如何安装非常好用的Python编辑器&#xff0c;也就是jetbrains全家桶的PyCharm编辑器。PyCharm是jetbrans开发的一款专门用来编写Python程序的编辑器&#xff0c;它的自动补全、代码联想、框架支持、插件支持以及高效的反应速度成为了编写Py…

Windows与linux双系统安装

[源] [http://xiaomaimai.blog.51cto.com/1182965/294256] Windows与linux双系统 Linux的安装方式有硬盘安装、网络安装、光驱安装。 双系统的安装最后先安装windows&#xff0c;再安装linux&#xff0c;因为windows每次安装时都会重新修改系统引导文件&#xff0c;如果安装…

第一步:Axure 使用svn多人协作产品开发(提交文件)

注册登陆http://www.svnxiezuo.com站点 注册登陆http://www.svnxiezuo.com站点 从注册http://www.svnxiezuo.com站点获取svn项目地址 编辑axure文件 开始创建axure共享文件 创建axure共享文件 axure提交文件到svn版本库当中 登陆http://www.svnxiezuo.com站点svn版本库 axure创…

python socketio async client_electron/socket.io client-python socketio/aiohttp server//连接失败

此websocket连接失败。有趣的是这几天前还在起作用。我把电子从6降到了5.0.6,但这没用。服务器from aiohttp import webimport socketioapp web.Application()sio socketio.AsyncServer()# or sio socketio.AsyncServer(cors_allowed_origins*)sio.attach(app)sio.on(connec…

领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型

领导者/追随者&#xff08;Leader/Followers&#xff09;模型和半同步/半异步&#xff08;half-sync/half-async&#xff09;模型都是常用的客户-服务器编程模型。这几天翻了些文章&#xff0c;发现对领导者/追随者模型说的比较少&#xff0c;下面就这个模型打个比方&#xff1…

网络编程模型综述 之 成熟的IO框架介绍

ACE “重量级的C I/O框架&#xff0c;用面向对象实现了一些I/O策略和其它有用的东西&#xff0c;特别是它的Reactor是用OO方式处理非阻塞I/O&#xff0c;而Proactor是用OO方式处理异步I/O的( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor …

网络编程模型综述 之 多线程模型

每个连接对应一个线程 一个网络socket对应一个处理线程&#xff0c;socket采用阻塞I/O模型&#xff1b; 这种模型是小程序和java常用的策略&#xff0c;对于交互式的长连接应用也是常见的选择(比如BBS)&#xff0c;也常用来做内部服务器交互的模型。这种策略很难满足高性能程序…

已知两边求角度公式_有30度角的直角三角形,已知一直角边,求另两边的公式,快速求法...

有30度角的直角三角形&#xff0c;已知一直角边&#xff0c;求另两边的公式&#xff0c;快速求法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;有30度角的直角三角形&#xff0c;已知一直角…

jQuery 实现一个简单的信息反馈或者信息收集的页面

部分技术&#xff1a; jquery Form validation .NET handler ASP.NET Email notification.页面为简单的纯HTML Js 定义&#xff0c;提交表单通过jQuery 进行表单验证&#xff0c;提示友好的验证信息。表单验证成功 &#xff0c;使用jQuery ajax 提交到ASP.NET 后台代码 Han…

网络编程模型综述 之 UNIX网络I/O模型

阻塞I/O Socket设置为阻塞模式&#xff0c;当socket不能立即完成I/O操作时&#xff0c;进程或线程进入等待状态&#xff0c;直到操作完成。如下图&#xff1a; 这种模型非常经典&#xff0c;也被广泛使用&#xff0c;优势在于非常简单&#xff0c;等待的过程中占用的系统资源微…

大叔手记(21):汤姆大叔博客园开博100天总结

介绍 昨天是注册博客园的第100天&#xff0c;截止到今天大叔发了99篇帖子&#xff0c;加上今天这篇总共100篇&#xff0c;想来也应该来个总结了&#xff0c;本来是昨天写总结的&#xff0c;但由于加班&#xff0c;于是挪到今天了。 为何开博 博客这种事物在兴起的时候就已经知道…

java $和$$的区别_Java #{}和${}区别

Mybatis中使用#{}可以防止sql注入#{}: 表示一个占位符号,实现向PreparedStatement占位符中设置值(#{}表示一个占位符?),自动进行Java类型到JDBC类型的转换(因此#{}可以有效防止SQL注入).#{}可以接收简单类型或PO属性值,如果parameterType传输的是单个简单类型值,#{}花括号中可…

half-sync/half-async 和 Leader/Followers 模式的主要区别

在 《POSA2》 一书中&#xff0c;关于这两个模式有两个很形象的比喻&#xff1a;半同步/半异步&#xff08;half-sync/half-async&#xff09;&#xff1a;许多餐厅使用 半同步/半异步 模式的变体。例如&#xff0c;餐厅常常雇佣一个领班负责迎接顾客&#xff0c;并在餐厅繁忙时…

JAVA中的IO系统详解

Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符&#xff0c;分别操作字符、字符数组或字符串&#xff0c;而字节流处理单元为 1 个字节&#xff0c;操作字节和字节数组。 Java 内用 Unicode 编码存储字符&#xff0c;字符流处理类负责将外部…

Windows 8 JavaScript Metro应用程序--入门(上)

Windows 8 JavaScript Metro应用程序--入门&#xff08;上&#xff09; 如你所知的Windows8允许你通过以下几种方式创建Metro应用程序&#xff1a; CC# JavaScript第一部分将侧重于主体结构和JavaScript Grid 应用程序的基础&#xff0c;在随后的文章中我将深度探究在Windows8中…

如何构建自己的SIP SERVER!

如果你下载了 sip phone, 自己又做了一个 SIP SERVER,那么你就可以当老大了&#xff0c;不要什么MSN&#xff0c;QQ的语音通话了&#xff0c;自己就可以直接同你想要的人通话了。1&#xff1a;软件准备&#xff1a;A: SIP SERVER http://www.brekeke.com/en/download/idx_sipse…

mac java版本 不一致_mac实现不同版本的jdk切换

之前使用jdk11进行java开发(纯粹因为喜欢新版?)但是使用jdk11在布署hadoop伪分布时各种报错, 所以还是下载jdk8回来.接下来就是mac端切换两个版本的jdk(按照网上找的方式好像有bug-文章最后再说.虽然不知道怎么解决,但是至少我可以成功部署hadoop, 所以这里就先忽略)首先下载j…

Meld安装

Ubuntu下文件/目录对比的软件Meld可能有很多用户还不是很熟悉&#xff0c;下文就给大家介绍如何安装Meld和移植到Gedit下。具体内容如下所述。 Meld允许用户查看文件、目录间的变化。很容易移植到Gedit下&#xff0c;方便用户使用。 安装Meld Meld默认在Ubuntu官方源中&#…

[译]预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序...

译自&#xff1a; http://accu.org/var/uploads/journals/overload101.pdf 在多线程应用程序中&#xff0c;要求消息输入队列和消息输出队列顺序要求保持一致&#xff0c;而忽略多线程并发处理的顺序&#xff0c;这种情况是比较难处理的。在本文中&#xff0c;作者设计了一种新…