热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLServer高级内容之case语法函数概述及使用

本文将详细介绍下Case函数的用法感兴趣的你可以参考下,或许对你有所帮助

本文将详细介绍下Case函数的用法感兴趣的你可以参考下,或许对你有所帮助

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(10),
        amount int
      )
      insert into PracticeTest(number,amount) values('RK1',10)
      insert into PracticeTest(number,amount) values('RK2',20)
      insert into PracticeTest(number,amount) values('RK3',-30)
      insert into PracticeTest(number,amount) values('RK4',-10) 2)实现的效果如下:
    

3)可以看出,首先select中应该有三个字段,并且将数据大于0的放到收入中,那么另一个为0,并且将小于0的放到支出里面,另一个为0,下面我们写实现的SQL语句:
代码如下:
       select number as 单号,
        case
          when amount>0 then amount
          else 0
        end as 收入,
        case
          when amount<0 then -amount
          else 0
        end as 支出
      from PracticeTest

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

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

      

2)执行的SQL语句:
代码如下:
  create table Score
      (
        学号 nvarchar(10),
        课程 nvarchar(10),
        成绩 int
      )
      insert into Score values('0001','语文',87)
      insert into Score values('0002','数学',79)
      insert into Score values('0003','英语',95)
      insert into Score values('0004','语文',69)
      insert into Score values('0005','数学',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 学号

相信自己,你就是下一个奇迹!

推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
author-avatar
长不大的二楞子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有