1.
case函数,可以称为case函数称为流程控制函数。
2.两种使用方法
第一种: 定值判断
-- 创建表结构
create table [user]
(
uId int identity(1,1) primary key,
uName varchar(50),
uLevel int -- 1骨灰 2大虾 3菜鸟
)
-- 插入数据
insert into [user] (uName,uLevel) values ('犀利哥',1)
insert into [user] (uName,uLevel) values ('小月月',2)
insert into [user] (uName,uLevel) values ('芙蓉姐姐',3)
-- 定值判断直接跟字段名
select uId,uName,
case uLevel
when 1 then '骨灰' -- then 后面的数据类型必须一致
when 2 then '大虾'
when 3 then '菜鸟'
end as '等级'
from [user]
第二种: 区间判断
-- 创建表结构
create table scroe
(
sId int identity(1,1) primary key,
sMath int
)
-- 插入数据
insert into scroe(sMath) values (60)
insert into scroe(sMath) values (66)
insert into scroe(sMath) values (75)
insert into scroe(sMath) values (86)
insert into scroe(sMath) values (95)
insert into scroe(sMath) values (30)
insert into scroe(sMath) values (100)
-- 区间判断 字段名写在when后面
select sId,
case
when sMath between 60 and 70 then '及格'
when sMath between 70 and 80 then '良好'
when sMath between 80 and 90 then '优秀'
when sMath between 90 and 100 then '满分'
when sMath between 0 and 60 then '不及格'
end as '数学成绩'
from scroe
3. 练习题
-- 表结构
create table Test
(
number varchar(10),
amount int
)
insert into Test(number,amount) values('RK1',10)
insert into Test(number,amount) values('RK2',20)
insert into Test(number,amount) values('RK3',-30)
insert into Test(number,amount) values('RK4',-10)
-- 答案
select number as '单号',
case
when amount > 0 then amount
else 0
end as '收入',
case
when amount < 0 then abs(amount) -- abs绝对值函数
else 0
end as '支出'
from Test
注意: 每个case...end 后面要起个列名。