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;

     

  • 相关阅读:
    C# VideoAPI
    C# 列出进程
    利用SQL为Code128码添加起始符和休止符
    SQL sysobjects 表 详解
    跳过从Win7/8升级,直接格式化全新安装 Windows 10 并自动永久激活系统的方法教程
    SQL EXCEPT INTERSECT
    C# 重启程序本身
    SQL HAVING 子句使用
    SQL over的作用及用法
    SQL 游标 Cursor 基本用法
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11243108.html
Copyright © 2011-2022 走看看