SQL Server高级内容之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(),
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语法函数的更多相关文章
- SQL Server高级内容之子查询和表链接
1.子查询概念 (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询. (2)自查询的分类 1)独立子查询 ->独 ...
- SQL Server高级内容之表表达式和复习
1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询. (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...
- SQL Server 中截取字符串常用的函数
SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...
- SQL Server中的LEFT、RIGHT函数
SQL Server中的LEFT.RIGHT函数. LEFT:返回字符串中从左边开始指定个数字符. LEFT(character_expression,integer_expression); RIG ...
- SQL server高级语法
1. 公共表达式CTE 公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE.递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达 ...
- SQL Server 数据库子查询基本语法
一.SQL子查询语句 1.单行子查询 select ename,deptno,sal from emp where deptno=(select deptno ...
- 在SQL SERVER中实现RSA加解密函数(第二版)
/*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.5 注: 转载请保留此信息 更 ...
- 在SQL SERVER中实现RSA加解密函数(第一版)
/*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.1 注: 转载请保留此信息 ...
- SQL Server学习内容(一)
SQL Server SQL Server对大小写不敏感,每条语句末端使用分号. 1.SQL命令 SELECT 从数据中提取数据 UPDATE 更新数据中的数据 DELETE 从数据库中删除数据 IN ...
随机推荐
- 为DELL inspiron 14R安装CentOS X64 6.4
今天接到一个任务,为DELL inspiron 14R安装CentOS X64 6.4,本以为这是小菜一碟,不算个啥,大大小小安装LINUX CENTOS 不下上百次了,还怕这个?结果,各种碰壁... ...
- Android自定义图形,图形的拼接、叠加、相容
直接上Xfermode子类: AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图). PixelXorXfermode 当覆盖已有的颜色时,应用一 ...
- BZOJ 1014: [JSOI2008]火星人prefix Splay+二分
1014: [JSOI2008]火星人prefix 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1014 Description 火星人 ...
- 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 ...
- Codeforces Gym 100803F There is No Alternative 暴力Kruskal
There is No Alternative 题目连接: http://codeforces.com/gym/100803/attachments Description ICPC (Isles o ...
- Codeforces Gym 100463E Spies 并查集
Spies Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Desc ...
- 菜鸟从零学编程(八)——将MyEclipse项目导入到Eclipse
最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...
- 使用NuGet安装EntityFramework4.2
1.下载NuGet 有两种方式下载NuGet 第一种:在微软的档案库下载,下载地址为:http://visualstudiogallery.msdn.microsoft.com/27077b70-9d ...
- 好记心不如烂笔头之JQuery学习,第四章
---恢复内容开始--- JQuery中的事件和动画 JQuery中的事件: $(document).ready()该事件和JS中的window.load类似,但是window.load中需要等待所有 ...
- 你真的了解javascript吗
原文地址:http://dmitry.baranovskiy.com/post/91403200 看了文章中五个小例子,写了写自己的理解 #demo1 if (!("a" in w ...