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()函数使用技巧相关推荐

  1. Oracle中Decode()函数使用技巧

    DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一个例子, ...

  2. python decode函数的用法_decode函数的用法

    DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途呢? 先构造一个例子,假 ...

  3. SQL中decode函数的用法

    SQL中decode函数的用法 2008-07-30 17:11:14 本文已公布到博客频道职场·创业分类 DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司 ...

  4. SQL DECODE函数使用

    DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.DECODE有什么用途呢? 先构造一个例子,假 ...

  5. decode函数_decode函数的妙用网友的两个问题解答

    <decode函数的妙用>这篇文章中,提到两种写法, SQL> select * from emp where id=:id and (name=:name or (name is ...

  6. 使用decode函数

    Decode函数使用: Oracle 的decode函数蛮有意思,是oracle独有的,国际标准SQL中并没有decode函数. 语法 DECODE(col|expression, search1, ...

  7. decode函数的妙用

    如下这张表,包含id和name两列,其中id是主键,name允许为空,存在两条记录,一条是(id=1,name='a'),另一条是(id=2,name=''), SQL> create tabl ...

  8. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  9. mysql sql decode函数用法_oracle中的decode的使用介绍

    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THE ...

最新文章

  1. 点分十进制IP校验、转换,掩码校验
  2. linux c 守护进程创建原理及简易方法
  3. LeetCode Decode String(栈和递归)
  4. AOP||动态代理||AOP专业术语;
  5. Android及java中list循环添加时覆盖的问题-20171021
  6. hibernate中的所有属性
  7. 技术管理规划-路径跟资源
  8. 【codeforces 103E】 Buying Sets
  9. [SQL SERVER 2005]数据库差异备份及还原
  10. 【小记事】电脑命令行开WiFi
  11. vscode中前端vue项目详解_web前端Vue项目实战-Music
  12. android自定义广播实现app完全退出
  13. 左神算法基础class6—题目1图的存储与表达
  14. 【LOJ#10064】黑暗城堡
  15. FFmpeg基础: 视频裁剪
  16. Gitee码云仓库操作步骤---忘了就来看看
  17. 【巴什博弈】HDOJ2188悼念512汶川大地震遇难同胞——选拔志愿者
  18. 世界杯梦幻阵容HTML5代码,FIFA足球世界世界杯模式阵容搭配推荐
  19. Macbook pro2019 13.3寸 开机问题 APPLE客服协助解决,体验感超棒
  20. 中控考勤与海威达C6考勤系统考勤数据同步

热门文章

  1. 【NLP系列】最新BERT相关论文汇总
  2. 一代数学大家--John Conway逝世,丘成桐、陶哲轩纷纷发文缅怀!
  3. 麻省理工正式宣布人工智能独立设系!人工智能与电子工程、计算机科学系将三分天下...
  4. SAP QM 检验批录入了结果以后不能再Reset检验计划了?
  5. SAP MM 物料主数据里的‘Packaging Material Type‘字段
  6. 了解GAN背后的设计,训练,损失函数和算法
  7. SAP SD 基础知识之Cash Sales和Rush Order的区别
  8. 世界顶级AI大神综述深度学习
  9. SAP MM Return Purchase Order之使用
  10. 科普丨深度神经网络与生命的意义