根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
1 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
2 【功能】根据条件返回相应值
3 【参数】c1, c2, ...,cn,字符型/数值型/日期型,必须类型相同或null
4 注:值1……n 不能为条件表达式,这种情况只能用case when then end解决
5
6 ·含义解释:
7 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
8 该函数的含义如下:
9 IF 条件=值1 THEN
10 RETURN(翻译值1)
11 ELSIF 条件=值2 THEN
12 RETURN(翻译值2)
13 ......
14 ELSIF 条件=值n THEN
15 RETURN(翻译值n)
16 ELSE
17 RETURN(缺省值)
18 END IF
19
20 或:
21 when case 条件=值1 THEN
22 RETURN(翻译值1)
23 ElseCase 条件=值2 THEN
24 RETURN(翻译值2)
25 ......
26 ElseCase 条件=值n THEN
27 RETURN(翻译值n)
28 ELSE
29 RETURN(缺省值)
30 END
31
32
33 【示例】
34 ·使用方法:
35 1、比较大小
36 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
37 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
38 例如:
39 变量1=10,变量2=20
40 则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
41
42 2、表、视图结构转化
43 现有一个商品销售表sale,表结构为:
44 month char(6) --月份
45 sell number(10,2) --月销售金额
46 现有数据为:
47 200001 1000
48 200002 1100
49 200003 1200
50 200004 1300
51 200005 1400
52 200006 1500
53 200007 1600
54 200101 1100
55 200202 1200
56 200301 1300
57
58 想要转化为以下结构的数据:
59 year char(4) --年份
60 month1 number(10,2) --1月销售金额
61 month2 number(10,2) --2月销售金额
62 month3 number(10,2) --3月销售金额
63 month4 number(10,2) --4月销售金额
64 month5 number(10,2) --5月销售金额
65 month6 number(10,2) --6月销售金额
66 month7 number(10,2) --7月销售金额
67 month8 number(10,2) --8月销售金额
68 month9 number(10,2) --9月销售金额
69 month10 number(10,2) --10月销售金额
70 month11 number(10,2) --11月销售金额
71 month12 number(10,2) --12月销售金额
72
73 结构转化的SQL语句为:
74
75 create or replace view
76 v_sale(year,month1,month2,month3,month4,month5,month6,
77 month7,month8,month9,month10,month11,month12)
78 as
79 select
80 substrb(month,1,4),
81 sum(decode(substrb(month,5,2),'01',sell,0)),
82 sum(decode(substrb(month,5,2),'02',sell,0)),
83 sum(decode(substrb(month,5,2),'03',sell,0)),
84 sum(decode(substrb(month,5,2),'04',sell,0)),
85 sum(decode(substrb(month,5,2),'05',sell,0)),
86 sum(decode(substrb(month,5,2),'06',sell,0)),
87 sum(decode(substrb(month,5,2),'07',sell,0)),
88 sum(decode(substrb(month,5,2),'08',sell,0)),
89 sum(decode(substrb(month,5,2),'09',sell,0)),
90 sum(decode(substrb(month,5,2),'10',sell,0)),
91 sum(decode(substrb(month,5,2),'11',sell,0)),
92 sum(decode(substrb(month,5,2),'12',sell,0))
93 from sale
94 group by substrb(month,1,4);
95
根据条件返回相应值 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的更多相关文章
- decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETU ...
- oracle函数 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
[功能]根据条件返回相应值 [参数]c1, c2, ...,cn,字符型/数值型/日期型,必须类型相同或null 注:值1……n 不能为条件表达式,这种情况只能用case when then end解 ...
- [datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
-- :09关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在实际编程工程中,常常遇到这样的情况:DataTable并不 ...
- 在DataTable中执行DataTable.Select("条件")返回DataTable;
转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...
- linq 根据指定条件返回集合中不重复的元素
原理:先查询出数据,根据指定值分组,然后取第一条映射 1.第一种方法 string sql = string.Format("select*from PoliceLogistcs); db. ...
- EXCEL应用:高级筛选里的条件或和与的条件怎么写 例:不包含,包含等
============================================================= a列包含b列,在c列中显示b列信息, =INDEX(B:B,MIN(IF(I ...
- pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)
pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 de ...
- if语句 条件测试 shell编程之条件语句
shell 编程之条件语句一.条件测试 ① test命令 测试 ② 文件测试 ③ 整数值比较 ④ 字符串比较 ⑤ 逻辑测试二.if语句的结构 单分支结构 双分支结构 多分支结构三.ca ...
- C++:利用如下公式,编写函数计算∏的值,直到最后一项的绝对值小于e,主程序接收从键盘输入的e,输出∏的值(保留5位小数)。 ∏/4 = 1-1/3+1/5-1/7...
利用如下公式,编写函数计算∏的值,直到最后一项的绝对值小于e,主程序接收从键盘输入的e,输出∏的值(保留5位小数). ∏/4 = 1-1/3+1/5-1/7... #include <iostr ...
随机推荐
- Service Fabric基本概念: Node, Application, Service, Partition/Replicas
作者:张鼎松 (Dingsong Zhang) @ Microsoft 在上一节中,为大家简明扼要的介绍了微软针对现代分布式系统在Azure上实现的相关服务组件.紧接上文内容,本节将为大家介绍Azur ...
- vue切换路由页面内容没有重载
项目中遇到这样一个问题: 在一个地方填了一个申请的表单,需要在另一个页面的列表上显示出来这条申请的数据,但是由于vue的缓存,在切换路由时列表上并没有及时更新数据,解决方法如下: vue路由切换时页面 ...
- centos7安装minikube
安装之前需要在bios中开启虚拟化功能.这里是在vmvare虚拟机中安装.开启步骤如下: 下载virtualbox 官网地址:https://www.virtualbox.org/ [virtualb ...
- 宕机不等于关机,阴魂不散的vm
今天早上刚到公司,就发现研发环境的机器连不上了. 公司研发环境的部署比较简单,物理机上装VMware Esxi 6 ,然后在esxi上装虚机. 检查发现:esxi ping不通,客户端也连不上:物理机 ...
- cpu load过高问题排查
load average的概念 top命令中load average显示的是最近1分钟.5分钟和15分钟的系统平均负载. 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少 ...
- VMware WorkStation9.0 安装centos-6.4
1,设置虚拟机内存为8G时,启动报内存不足错误: Not enough physical memory is available to power on this virtual machine 解决 ...
- 在O(n) 时间复杂度,O(1)空间复杂度内反转单链表
在LeetCode中看到判断回文的程序:https://leetcode.com/problems/palindrome-linked-list/ 里面用单链表来存储数据,先反转前半部分的单链表,然后 ...
- iscroll.js 手机上下滑动 加载更多
html <!DOCTYPE html> <html> <head> <title>下拉上拉刷新页面代码</title> <meta ...
- css/css3常用收集/笔记
_______________________________________________________________ css3 瀑布流 N 列 <ul><li>aa ...
- ECSHOP /mobile/admin/edit_languages.php
漏洞名称:ecshop代码注入漏洞 补丁编号:10017531 补丁文件:/mobile/admin/edit_languages.php 补丁来源:云盾自研 更新时间:2017-01-05 08:4 ...