zoukankan      html  css  js  c++  java
  • Oracle decode函数

    出处:https://blog.csdn.net/wcacer/article/details/100181058

    一 两种语法格式

    1 decode(expression,value,result1,result2)

       如果expression=value,则输出result1,否则输出result2

       例子:

                

               (1+2=3,输出a)

                 

                (1+2≠4,输出b)

    2 decode(expression,value1,result1,value2,result2,value3,result3......,default)

       如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3,

       若expression不等于所列出的所有value,则输出为default

      例子:

                

                (score=100,输出'NO.1',score='90',输出‘NO.2’,score='70',输出‘NO.3’,其他值输出'Other')

    二 应用

    1 使用decode函数分段

       将成绩表中分数大于90分的分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,60分以下为不及格。

               

              (sign()函数的作用是,判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1;

                 如图,当socre大于或等于90时,socre-90>=0,sign()函数返回1或0,则输出‘优秀’,

                 在score-90<0的情况下,再判断socre-80,socre-80>=0,sign()函数返回1或0,则输出‘良好’,

                 以此类推,用decode()的嵌套配合sign()函数来实现对分数的分段以及相应的输出,

                 最后60分以下的就default为‘不及格’就可以了,可以看到我们的Tony老师的分数就不及格了)

    2 使用decode函数对表做行列转换

                 

    如图所示,有一张三个科目的成绩表,各科目名称和相应的分数呈现在行中,

    现想将各科目名称转换为列名,每列的内容为对应科目的分数。

                 

                 (如图,先用decode函数判断subject为Chinese时,输出score,不为Chinese时,输出为NULL,

                    因为共有三个科目,所以输出其中一个科目的分数时,其他科目的分数为NULL,这里只需要

                    用sum()函数来实现聚合的作用,将空值去除掉就可以了)

                  

                (sum()函数分别将name为John的每个列的值相加,如Chinese列,80+NULL+NULL=80,

                  再将name为Will的每个列的值相加,然后group by将name分组,最终达到如上图聚合的效果)

  • 相关阅读:
    mysql数据库常用指令
    解决windows的mysql无法启动 服务没有报告任何错误的经验。
    “Can't open file for writing”或“operation not permitted”的解决办法
    启动Apache出现错误Port 80 in use by "Unable to open process" with PID 4!
    如何打开windows的服务services.msc
    常见的HTTP状态码 404 500 301 200
    linux系统常用的重启、关机指令
    (wifi)wifi移植之命令行调试driver和supplicant
    linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
    alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号
  • 原文地址:https://www.cnblogs.com/Bkxk/p/14266280.html
Copyright © 2011-2022 走看看