oracle_decode

本文详细介绍了 SQL 中的 decode 函数及其应用场景,包括条件判断、比大小、行列转换等操作,并对比了 decode 函数与 case when 语句的不同用法。

decode(条件,值1,返回值1,值2,返回值2,……,值n,返回值n,缺省值)

含义:

  if 条件=值1 then

      return (返回值1)

  else if 条件=值2

        return (返回值2)

  ……

  else if 条件=值n

         return (返回值n)

  end if

--------------------------------------------------------------------------

 比大小 

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

  select decode(sign(变量1-变量2),-1,变量1,变量2)

--------------------------------------------------------------------------

行列互转

表1:socre

  Name  Subject  Result

1     张三      语文     90

2     张三      数学     98 

3     张三      英语     76

4     李四      语文     71

5     李四      语文     72

6     李四      语文     73

-------decoe---

select Name, 

    sum(decode(Subject,'语文',Result,0)) 语文,

    sum(decode(Subject,'数学',Result,0)) 数学,

    sum(decode(Subject,'英语',Result,0)) 英语,

from score;

-------case when-then-end---

select Name,

    sum(case when Subject='语文' then Result end) 语文,

    sum(case when Subject='数学' then Result end) 数学,

    sum(case when Subject='英语' then Result end) 英语,

from score;

-----------------结果----------------------------------------------

  Name  语文  数学  英语

1     张三     90       98        76

2     李四   71      72        73

 

-----在order by 中使用decode------------

按语,数,外进行排列  select * from score order by decode(Subject,'语文',1,'数学'2,'英语'3)

 

---分别统计男女生数量----

一、

select count(*) from 表 where sex='男'';

select count(*) from 表 where sex='女';

二、

select sum(decode(sex,男,1,0)) 男,sum(decode(sex,女,1,0)) 女 from 表;

 

转载于:https://www.cnblogs.com/0914lx/p/6940103.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值