1.Case函数的用法 (1)使用类似:switch-case与if-else if。 (2)语法: case [字段] when 表达式 then 显示数据 when 表达式 then 显示数据 else 显示数据 end (3)百分制转换素质教育 1)如图:我们要将显
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 学号 相信自己,你就是下一个奇迹!