sql函数sign、decode、 case……when (一)

(一)函数语法:
sign(n)


函数说明:
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0  (是和0比较)
示例:
    a=10,b=20
  则sign(a-b)返回-1


(二)函数
decode


具体:
DECODE(字段,比较1,值1,比较2,值2,.....,比较n,值n缺省值)  其实是:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

示例:
DECODE("字段",1,"男","女")   字段的值为"1"时,为男 。否则为:女


如:
1、职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值?
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2)salary from employee

2、select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值


(三)函数  case 字段 when …… then …… else …… end
      case 字段 when …… and …… then …… else …… end


示例:
1、各种性别的人数进行统计,sql语句如下
select
sum( case u.sex when 1 then 1 else 0 end) 男性,       
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2  then 1 else 0 end) 性别为空
from users u;

执行结果如下

  男性  女性  性别为空
  1 41    15   0

2、一个字段上的判断条件然后求和

      sum(case  when cast(xb.jkr As Date) >= gg.RZKSSJ and

                                 cast(xb.jkr As Date) <= gg.RZJSSJ then

                                xb.dky 

       end)   


###decode和case……when……等价   

        在判断条件为一个范围的时候,用case……when……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值