SQL case when语法
注意:then后面返回的数据类型要一致,
--------------举例1---------------
--95以上,优秀
--90以上,良好
--80分以上 中
--80以下 差
select
tscoreId,
tsid,
tenglisth,
评级=
case --相当于if else
when tenglish>=95 then '优秀'
when tenglish>=90 then '良好'
when tenglish>=80 then '中'
when tenglish is null then '缺考'
else '其他'
end
from TblScore
--------------举例2---------------
等值判断,相当于switch case
create table [user]
(
uId int identity(1,1) primary key,
name varchar(50),
level int --1骨灰 2大虾 3菜鸟
)
insert into [user] (name,level) values('犀利哥',1)
insert into [user] (name,level) values('小月月',2)
insert into [user] (name,level) values('芙蓉姐姐',3)
select name,等级=(
case level
when 1 then '骨灰'
when 2 then '大虾'
when 3 then '菜鸟'
end
)
from [user]
--------------举例3---------------
需求:
单号 金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号 收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
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,
amount,
收入=
CASE
WHEN amount>=0 THEN amount
ELSE 0
END,
支出=
CASE
WHEN amount<=0 THEN ABS(amount)
ELSE 0
end
FROM test