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;

     

  • 相关阅读:
    CodeForces
    CodeForces
    CodeForces
    【模板】POJ-1511(dijkstra堆优化+链式前向星)
    【模板】POJ-1502(dijkstra)
    P2862 [USACO06JAN]Corral the Cows G
    P2495 [SDOI2011]消耗战
    CF613D Kingdom and its Cities
    P4655 [CEOI2017]Building Bridges
    P3917 异或序列
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11243108.html
Copyright © 2011-2022 走看看