zoukankan      html  css  js  c++  java
  • 根据条件返回相应值 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 
  • 相关阅读:
    MTLLoader 报 Handlers.get() has been removed. Use LoadingManager.getHandler() instead 错误处理
    uniCloud云开发已实现五端上线【言语录书】
    v-model 双向绑定 vue3.x
    javascript 集合操作
    链表操作
    vue3 父子组件双向数据绑定
    二叉树排序
    自制Chrome扩展插件:用于重定向js
    解析Markdown文件生成React组件文档
    微前端框架single-spa初探
  • 原文地址:https://www.cnblogs.com/ios9/p/7451049.html
Copyright © 2011-2022 走看看