zoukankan      html  css  js  c++  java
  • case和decode的用法(行转列)

      创建了一张成绩表,如下图所示:

     

      在oracle中,这两个函数我们都可以使用,代码及结果如下:

      decode用法:

        select Name,decode(Subject,'语文',1,'数学',2,'英语',3) 科目代码 from results;

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

      

      case用法:

      select name,
           case 
              when Subject='语文' then 1
              when Subject='数学' then 2
              when Subject='英语' then 3  --else 3
           end  as 科目代码
      from Results;

      这两种方法均能达到同样的结果:

      

      同样的,我们可以使用这两个函数实现行转列,代码及结果如下:

      decode:

    select 
       Name,
       sum(decode(Subject,'语文',Result,0)) 语文,
       sum(decode(Subject,'数学',Result,0)) 数学,
       sum(decode(Subject,'英语',Result,0)) 英语
    from Results
    group by Name;

         

      case:

    select 
       Name,
       sum((case when Subject='语文' then Result else 0 end)) 语文,
       sum((case when Subject='数学' then Result else 0 end)) 数学,
       sum((case when Subject='英语' then Result else 0 end)) 英语
    from Results
    group by Name;

     

  • 相关阅读:
    JavaScript事件冒泡简介及应用
    个人作业——软件工程实践总结&个人技术博客
    个人技术总结
    个人作业——软件测评
    寒假作业(2/2)
    寒假作业(1/2)
    gitlab-ci.yml可用关键字描述
    gitlab-Runner配置参数详解
    gitlab-ci部署实现持续集成(centos7)
    linux时间同步操作命令
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11243108.html
Copyright © 2011-2022 走看看