--case语句
--case语法1:
--case when condition1 then returnValue1
--when condition2 then returnValue2
--when condition3 then returnValue3
--.....
--else defultValue
--end as[列别名]
--查询学生的数学成绩,以优良中差四级显式
select * from Tbstudent
select stuNumber,stuName,
case when stuMath>=90 then '优'
when stuMath>=80 then '良'
when stuMath>=70 then '中'
else '差'
end as 数学成绩
from Tbstudent
--注意:1.case语句就是构造出一个新的列
-- 2.使用case语句必须有end,但是可以不起别名
-- 3.所有的返回值类型必须一致
-- 4.case语句的作用类似于C#中的if....else
--练习1:查询每个学生的学号,姓名,最好成绩
select stuName,stuNumber,
case when stuMath>stuEnglish then stuMath
else stuEnglish
end as 最优成绩
from Tbstudent
--练习2.查询每个销售员的销售总额,并且列出销售员姓名,总销售额,
--以及他的称号(》1000金牌销售员,》800银牌销售员,》600铜牌销售员,普通销售员)
select * from SaleRecords
select saleMan,SUM(number*price) as 销售总额,
case when SUM(number*price) >1000 then '金牌销售员'
when SUM(number*price) >1000 then '银牌销售员'
when SUM(number*price) >1000 then '铜牌销售员'
else '普通销售员'
end as 称号
from SaleRecords
group by saleMan
--练习3:假设有一张家庭账目表
select * from FamilyRecord
select rDate,
case when rMoney>0 then rMoney
else 0 end as 收入,
case when rMoney<0 then abs(rMoney)
else 0 end as 支出
from FamilyRecord
--case语句第二种语法
--case 表达式 when value1 then returnValue1
-- when value2 then returnValue2
-- ...
-- else end as [别名]
--类似于C#中的switch...case
--练习:查询学生信息,显示姓名,学号,性别,
--其中性别一栏如果是0,则显示’美女‘,
--如果是1,则显示’帅哥‘
select stuName,stuName,
case when stuGender=0 then '美女'
else '帅哥'
end as 性别
from Tbstudent
select stuName,stuNumber,
case stuGender
when 0 then '美女'
when 1 then '帅哥'
else '人妖' end as 性别
from Tbstudent
--练习:
select * from Populations
select case country
when '中国' then '亚洲'
when '日本' then '亚洲'
when '美国' then '北美洲'
when '加拿大' then '北美洲'
when '法国' then '欧洲'
else '南极洲' end as 洲,SUM(population)
from Populations
group by case country
when '中国' then '亚洲'
when '日本' then '亚洲'
when '美国' then '北美洲'
when '加拿大' then '北美洲'
when '法国' then '欧洲'
else '南极洲' end