Decode()函数使用技巧
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
· 使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
2、表、视图结构转化
现有一个商品销售表sale,表结构为:
month char(6) --月份
sell number(10,2) --月销售金额
现有数据为:
200001 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
想要转化为以下结构的数据:
year char(4) --年份
month1 number(10,2) --1月销售金额
month2 number(10,2) --2月销售金额
month3 number(10,2) --3月销售金额
month4 number(10,2) --4月销售金额
month5 number(10,2) --5月销售金额
month6 number(10,2) --6月销售金额
month7 number(10,2) --7月销售金额
month8 number(10,2) --8月销售金额
month9 number(10,2) --9月销售金额
month10 number(10,2) --10月销售金额
month11 number(10,2) --11月销售金额
month12 number(10,2) --12月销售金额
结构转化的SQL语句为:
create or replace view
v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)
as
select
substrb(month,1,4),
sum(decode(substrb(month,5,2),'01',sell,0)),
sum(decode(substrb(month,5,2),'02',sell,0)),
sum(decode(substrb(month,5,2),'03',sell,0)),
sum(decode(substrb(month,5,2),'04',sell,0)),
sum(decode(substrb(month,5,2),'05',sell,0)),
sum(decode(substrb(month,5,2),'06',sell,0)),
sum(decode(substrb(month,5,2),'07',sell,0)),
sum(decode(substrb(month,5,2),'08',sell,0)),
sum(decode(substrb(month,5,2),'09',sell,0)),
sum(decode(substrb(month,5,2),'10',sell,0)),
sum(decode(substrb(month,5,2),'11',sell,0)),
sum(decode(substrb(month,5,2),'12',sell,0))
from sale
group by substrb(month,1,4);
员工工作年限分析:计算工作时间1个月,1至6个月,大于6个月的员工人数 1. 分3列显示
2.分3行显示
要求:不能用sub-query
SELECT QUARTER, COUNT(*) FROM (select EMPLID,
DECODE(ceil((last_date_worked-hire_dt)/30), null, 1, 0, 1, 1, 1,
2, 2,
3, 2,
4, 2,
5, 3,
6, 3,
7, 3,
8, 4,
9, 4,
10, 4,
11, 4,
12, 4,
13, 4,
5) as quarter
from ps_job
where action = 'TER') EMP_TER
GROUP BY quarter
ORDER BY quarter;
--group by quarter
select sum(DECODE(ceil((last_date_worked-hire_dt)/30), null, 1, 0, 1, 1, 1, 0)) 一个月,
sum(DECODE(ceil((last_date_worked-hire_dt)/30), 2, 1, 3, 1, 4, 1, 0)) 一至三个月,
sum(DECODE(ceil((last_date_worked-hire_dt)/30), 5, 1,
5, 1,
6, 1, 0)) 三至六个月,
sum(DECODE(ceil((last_date_worked-hire_dt)/30), 7, 1,
8, 1,
9, 1,
10, 1,
11, 1,
12, 1,
13, 1,
0)) 六至十二个月,
sum(decode(sign(ceil((last_date_worked-hire_dt)/30) - 13), 1, 1, 0)) 大于十二个月
from ps_job
where action = 'TER';
转载于:https://www.cnblogs.com/GoDevil/archive/2008/08/11/1265162.html
Decode()函数使用技巧相关推荐
- Oracle中Decode()函数使用技巧
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一个例子, ...
- python decode函数的用法_decode函数的用法
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途呢? 先构造一个例子,假 ...
- SQL中decode函数的用法
SQL中decode函数的用法 2008-07-30 17:11:14 本文已公布到博客频道职场·创业分类 DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司 ...
- SQL DECODE函数使用
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途呢? 先构造一个例子,假 ...
- decode函数_decode函数的妙用网友的两个问题解答
<decode函数的妙用>这篇文章中,提到两种写法, SQL> select * from emp where id=:id and (name=:name or (name is ...
- 使用decode函数
Decode函数使用: Oracle 的decode函数蛮有意思,是oracle独有的,国际标准SQL中并没有decode函数. 语法 DECODE(col|expression, search1, ...
- decode函数的妙用
如下这张表,包含id和name两列,其中id是主键,name允许为空,存在两条记录,一条是(id=1,name='a'),另一条是(id=2,name=''), SQL> create tabl ...
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...
- mysql sql decode函数用法_oracle中的decode的使用介绍
含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THE ...
最新文章
- 点分十进制IP校验、转换,掩码校验
- linux c 守护进程创建原理及简易方法
- LeetCode Decode String(栈和递归)
- AOP||动态代理||AOP专业术语;
- Android及java中list循环添加时覆盖的问题-20171021
- hibernate中的所有属性
- 技术管理规划-路径跟资源
- 【codeforces 103E】 Buying Sets
- [SQL SERVER 2005]数据库差异备份及还原
- 【小记事】电脑命令行开WiFi
- vscode中前端vue项目详解_web前端Vue项目实战-Music
- android自定义广播实现app完全退出
- 左神算法基础class6—题目1图的存储与表达
- 【LOJ#10064】黑暗城堡
- FFmpeg基础: 视频裁剪
- Gitee码云仓库操作步骤---忘了就来看看
- 【巴什博弈】HDOJ2188悼念512汶川大地震遇难同胞——选拔志愿者
- 世界杯梦幻阵容HTML5代码,FIFA足球世界世界杯模式阵容搭配推荐
- Macbook pro2019 13.3寸 开机问题 APPLE客服协助解决,体验感超棒
- 中控考勤与海威达C6考勤系统考勤数据同步
热门文章
- 【NLP系列】最新BERT相关论文汇总
- 一代数学大家--John Conway逝世,丘成桐、陶哲轩纷纷发文缅怀!
- 麻省理工正式宣布人工智能独立设系!人工智能与电子工程、计算机科学系将三分天下...
- SAP QM 检验批录入了结果以后不能再Reset检验计划了?
- SAP MM 物料主数据里的‘Packaging Material Type‘字段
- 了解GAN背后的设计,训练,损失函数和算法
- SAP SD 基础知识之Cash Sales和Rush Order的区别
- 世界顶级AI大神综述深度学习
- SAP MM Return Purchase Order之使用
- 科普丨深度神经网络与生命的意义