使用 Case When Then Else End 方法

假如有一张这样的表让它通过SQL的方式变成这个样子需要使用 Case When 的用法

select
  学号
  ,sum(case when 科目=‘语文‘  then 分数 else 0 end) as 语文
  ,sum(case when 科目=‘数学‘  then 分数 else 0 end) as 数学
  ,sum(case when 科目=‘英语‘  then 分数 else 0 end) as 英语
from
  Score
group by
   学号

时间: 2024-08-28 18:07:07

使用 Case When Then Else End 方法的相关文章

Programming in Scala (Second Edition) 读书笔记15 case class and pattern matching

一个算术表达式包含: 数字,变量,二元操作符,一元操作符.用下面几个类来模拟它们 package chapter15 abstract class Expr case class Var(name: String) extends Expr case class Number(num: Double) extends Expr case class UnOp(operator: String, arg: Expr) extends Expr case class BinOp(operator: 

搜索引擎返回劫持代码使用方法

代码简介:搜索引擎劫持代码是由作者使用JavaScript所写,通过手机浏览器可以让访问用户通过SEM或者SEO的搜索引擎快照进入网页点击返回按键时启用,可以直接瞬间返回到指定网址,从而达到搜索引擎劫持效果. 代码作者:陈安太 作者微信:2250090225 源码分享: // 版权所有:陈安太 // 作者扣扣:2250090225 // 返回劫持 var hash = window.location.href;         if (location.hash.indexOf("_bdtz&q

Scala之Case Class

本文原文出处: http://blog.csdn.net/bluishglc/article/details/50914001 严禁任何形式的转载,否则将委托CSDN官方维护权益! Case Class的特别之处在于: 编译器会为Case Class自动生成以下方法: equals & hashCode toString copy 编译器会为Case Class自动生成伴生对象 编译器会为伴生对象自动生成以下方法 apply unapply 这意味着你可以不必使用new关键字来实例化一个case

第7条:避免使用终结方法

终结方法(finalize)通常是不可预测的,它不是C++中析构器(destructors)的对应物,Java中一旦对象变的不可达,垃圾回收器会自动回收与该对象相关的存储空间,不需要程序员做专门的工作.C++析构器也可以用来回收其他非内存资源,在Java中,通常用try-finally来完成. 终结方法的缺点: 1.不能保证被及时执行,注重时间的任务不应该由终结方法完成,比如用终结方法关闭已经打开的文件,因为文件描述符是有限的资源,如果大量文件保留在打开状态,当程序不能再打开文件,可能会运行失败

软件工程——理论方法与实践(段落概述第一章至第十一章)

第一章软件软件是计算机程序,规程及运行计算机系统可能需要的文档和数据.软件分为通用软件和定制软件.软件的特性:1.复杂性2.不可见性3.不断变化4.大多数软件仍然是定制的,而不是通过已有的构件组装而成.软件于二十世纪50~60年代,70年代,80年代,90年代至今进行发展.在此过程中遇到一些危机:1.软件的开发成本和进度难以估计,延迟交付甚至取消项目的现象屡见不鲜.2.软件存在着错误多,性能低,不可靠,不安全等质量问题.3.软件的成本在计算机系统的整个成本中所占的比例越来越大.4.软件的维护极其

解决在IE下label中IMG图片无法选中radio的几个方法

今天遇到一个问题,在IE浏览器下,使用label FOR radio后,label中的图片无法选中.例如,这样的代码 <input type="radio" name="radio" id="a" /><label for="a"><img src="/Labs/images/logo.gif" /></label> ,这种情况下,点击label的图片将无法选

用Case类生成模板代码

将类锦衣为case类会生成许多模板代码,好处在于: ①会生成一个apply方法,这样就可以不用new关键字创建新的实例. ②由于case类的构造函数参数默认是val,那么构造函数参数会自动生成访问方法.如果是var也会有修改方法. ③会生成一个默认的toString的方法. ④会生成一个unapplay方法,在模式匹配时很好用. ⑤会生成equals和hashCode的方法. ⑥会生成copy的方法. 举个栗子: ①定义case时,在也不用new关键字来创建实例了: scala> case cl

小酌重构系列[5]&mdash;&mdash;为布尔方法命名

概述 当一个方法包含大量的布尔参数时,方法是很脆弱的,由此还可能会产生两个问题: 1. 方法不容易被理解 2. 给方法的使用者造成一定困扰,可能会产生一些预期之外的结果. 本文要介绍的重构策略"为布尔方法命名",可以有效地避开这两个问题. 为布尔方法命名 大量布尔参数带来的问题 下图中的SomeClass的SomeMethod包含3个布尔参数,如果没有注释,调用者根本不知道3个布尔参数所代表的含义. 即使为这个方法提供了详细的注释,调用者也很容易在调用时出错.调用者一不小心写错了其中一

异步任务AsyncTask使用解析

在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制.关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可以参照一下. 为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任