zoukankan      html  css  js  c++  java
  • ORACLE函数sign()用法

    1:比较大小函数 SIGN

    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 ,例如:

    引用
    a=10,b=20
    则sign(a-b)返回-1


    2:流程控制函数 DECODE

    DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商还没有实现此功能。假设想给职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,8000 元的不加。实现:
    select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee

    含义解释:

    引用
    decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)



    应用 行转列

    表结构:TEST_TB_GRADE:

    Java代码  收藏代码
    1. create table TEST_TB_GRADE    
    2. (    
    3.   ID        NUMBER(10) not null,    
    4.   USER_NAME VARCHAR2(20 CHAR),    
    5.   COURSE    VARCHAR2(20 CHAR),    
    6.   SCORE     FLOAT    
    7. )  


    初始数据如下图:



    如果需要实现如下的查询效果图:



    这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的,具体的sql如下:

    Java代码  收藏代码
    1. select t.user_name,    
    2.       sum(decode(t.course, '语文', score,null)) as CHINESE,    
    3.       sum(decode(t.course, '数学', score,null)) as MATH,    
    4.       sum(decode(t.course, '英语', score,null)) as ENGLISH    
    5.     from test_tb_grade t    
    6.     group by t.user_name    
    7.     order by t.user_name    

    nvl
    nvl(a,b) 如果a不为null 则返回a,如果a为null则返回b;

    nvl2
    nvl2(a,b,c) ,如果a不为null 则返回b,如果a为null则返回c;

    原文链接:https://www.iteye.com/blog/wentao365-1156889

  • 相关阅读:
    java中接口与抽象类的区别
    单例模式的懒汉式和饿汉式实现分析
    filter的原理(转)
    事务与连接池
    request对象和response对象的作用和相关方法
    java环境变量配置
    关于http
    java笔记5
    理解String的intern()方法
    用递归的方法算出给定字符串的最大连续重复字符的重复次数
  • 原文地址:https://www.cnblogs.com/ketoli/p/12895820.html
Copyright © 2011-2022 走看看