- 含义解释: 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);
-
- select v_dept_code as 机构代码,
- sum(decode(n_type, 1, n_money_left,0)) as 长款金额,
- sum(decode(n_type, 1, 1,0)) as 长款笔数,
- sum(decode(n_type, 2, n_money_left,0)) as 短款金额,
- sum(decode(n_type, 2, 1,0)) as 短款笔数
- from tb_cdk_fund_danger_info t
- where D_CONFIRM_DATE between sysdate - 1 and sysdate
- group by v_dept_code
decode函数的用法
最新推荐文章于 2024-08-07 15:29:13 发布