1.Case函数的用法

   (1)使用类似:switch-case与if-else if。

  (2)语法:

    case [字段]

      when 表达式 then 显示数据

      when 表达式 then 显示数据

      else 显示数据

    end

  (3)百分制转换素质教育

  1)如图:我们要将显示的数据转换成ABCDE,规则是90分以上显示A,80分以上显示B,以此类推。

    

   2)执行的SQL语句是:

  Select ID,TestBase,
  Case
    When testBase>=90 then ‘A’
    When testBase>=80 then ‘B’
    When testBase>=70 then ‘C’
    When testBase>=60 then ‘D’
    Else ‘E’ end as testBaseLevel,
  testBeyond,testDate from Score

   3)最后的执行结果如图所示:

    

  (4)注意:

    1)写case对应的就写上end。

    2)end后面跟别名(case与end之间相当于一个字段(对象))

   (5)和C#的switch-语法作比较

    1)C#

      Switch(变量)

      {

        Case 常量1:结果1;break;

        Case 常量2:结果2;break;

        Default :默认结果;break;
      }

    2) SQL

      SQL语法我在上面写了,可以对比看一下。

  (6)对应的if-else if语法

    1) C#

      If(表达式1) {结果1;}

      else if(表达式2) {结果2;}

      else {默认结果;}

    2)SQL Server

      case

        when 表达式1 then 显示1

        when 表达式2 then 显示2

        else 默认显示

      end

    3)举例说明,如果我们存放性别的时候在数据库中是用f,m标识的,现在我们想要用男女标识,SQL语句如下:

  Select ID,Name,stuSex,
  case
    when stuSex=’m’ then ‘男’
    when syuSex=’f’ then ‘女’
    else ‘其它’
    end as stuSexType,
  stuDate from Student。

(7)练习案例:

    1)在数据库中执行这段代码: 

  use Test
  go
  create table PracticeTest
  (
    number varchar(),
    amount int
  )
  insert into PracticeTest(number,amount) values('RK1',)
  insert into PracticeTest(number,amount) values('RK2',)
  insert into PracticeTest(number,amount) values('RK3',-)
  insert into PracticeTest(number,amount) values('RK4',-)

   2)实现的效果如下:

    

    3)可以看出,首先select中应该有三个字段,并且将数据大于0的放到收入中,那么另一个为0,并且将小于0的放到支出里面,另一个为0,下面我们写实现的SQL语句: 

  select number as 单号,
    case
      when amount> then amount
      else
    end as 收入,
    case
      when amount< then -amount
      else
    end as 支出
  from PracticeTest

    (8)一道面试题的练习:

    1)如图:我们写出下面执行的代码,数据库大家自己建或者我在下面附加脚本了,大家制药执行一下即可:

      

    2)执行的SQL语句:

  create table Score
  (
    学号 nvarchar(10),
    课程 nvarchar(10),
    成绩 int
  )
  insert into Score values('','语文',87)
  insert into Score values('','数学',79)
  insert into Score values('','英语',95)
  insert into Score values('','语文',69)
  insert into Score values('','数学',84)

    3)实现功能的SQL语句的书写

  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 学号

SQL Server高级内容之case语法函数的更多相关文章

  1. SQL Server高级内容之子查询和表链接

    1.子查询概念 (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询. (2)自查询的分类 1)独立子查询 ->独 ...

  2. SQL Server高级内容之表表达式和复习

    1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询.  (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...

  3. SQL Server 中截取字符串常用的函数

    SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...

  4. SQL Server中的LEFT、RIGHT函数

    SQL Server中的LEFT.RIGHT函数. LEFT:返回字符串中从左边开始指定个数字符. LEFT(character_expression,integer_expression); RIG ...

  5. SQL server高级语法

    1. 公共表达式CTE 公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达 ...

  6. SQL Server 数据库子查询基本语法

    一.SQL子查询语句 1.单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno ...

  7. 在SQL SERVER中实现RSA加解密函数(第二版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.5 注: 转载请保留此信息 更 ...

  8. 在SQL SERVER中实现RSA加解密函数(第一版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.1 注:   转载请保留此信息 ...

  9. SQL Server学习内容(一)

    SQL Server SQL Server对大小写不敏感,每条语句末端使用分号. 1.SQL命令 SELECT 从数据中提取数据 UPDATE 更新数据中的数据 DELETE 从数据库中删除数据 IN ...

随机推荐

  1. 为DELL inspiron 14R安装CentOS X64 6.4

    今天接到一个任务,为DELL inspiron 14R安装CentOS X64 6.4,本以为这是小菜一碟,不算个啥,大大小小安装LINUX CENTOS 不下上百次了,还怕这个?结果,各种碰壁... ...

  2. Android自定义图形,图形的拼接、叠加、相容

    直接上Xfermode子类: AvoidXfermode  指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图). PixelXorXfermode  当覆盖已有的颜色时,应用一 ...

  3. BZOJ 1014: [JSOI2008]火星人prefix Splay+二分

    1014: [JSOI2008]火星人prefix 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1014 Description 火星人 ...

  4. AIM Tech Round (Div. 2) B. Making a String 贪心

    B. Making a String 题目连接: http://codeforces.com/contest/624/problem/B Description You are given an al ...

  5. Codeforces Gym 100803F There is No Alternative 暴力Kruskal

    There is No Alternative 题目连接: http://codeforces.com/gym/100803/attachments Description ICPC (Isles o ...

  6. Codeforces Gym 100463E Spies 并查集

    Spies Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Desc ...

  7. 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse

    最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...

  8. 使用NuGet安装EntityFramework4.2

    1.下载NuGet 有两种方式下载NuGet 第一种:在微软的档案库下载,下载地址为:http://visualstudiogallery.msdn.microsoft.com/27077b70-9d ...

  9. 好记心不如烂笔头之JQuery学习,第四章

    ---恢复内容开始--- JQuery中的事件和动画 JQuery中的事件: $(document).ready()该事件和JS中的window.load类似,但是window.load中需要等待所有 ...

  10. 你真的了解javascript吗

    原文地址:http://dmitry.baranovskiy.com/post/91403200 看了文章中五个小例子,写了写自己的理解 #demo1 if (!("a" in w ...