oracle中的case和decode

 为了举例说明,这里创建了一张成绩表,如下图所示:

 

我们可以用case改变查询结果,代码及结果如下:

   selectname,

      case Subject

         when '语文' then 1

         when '数学' then 2

         when '英语' then 3   --else 3

      end  as '科目代码'

   fromResults

  

 同样的,我们可以用case实现行转列,代码及结果如下:

   selectName,

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

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

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

   fromResults

   group byName

  

  

我们使用decode看看,可以实现以上效果

    selectName,decode(Subject,'语文',1,'数学',2,3)科目代码 from Results;

 

    select

         Name,

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

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

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

    from Results

    group by Name;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值