###### SQL利用Case When Then多条件判断

CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4
.........
WHEN 条件N THEN 结果N
ELSE 结果X
END

Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

SELECT     id, name, cj, (CASE WHEN cj < 60 THEN '不及格' WHEN cj BETWEEN 60 AND 90 THEN '良好' WHEN cj > 90 THEN '优秀' END) AS 状态
FROM   stud

--比如说，下面这段SQL，你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a')       THEN '第二类'
ELSE'其他' END

SELECT  SUM(population),
CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END
FROM    Table_A
GROUP BY CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度'     THEN '亚洲'
WHEN '日本'     THEN '亚洲'
WHEN '美国'     THEN '北美洲'
WHEN '加拿大'  THEN '北美洲'
WHEN '墨西哥'  THEN '北美洲'
ELSE '其他' END;

SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600  THEN '2'
WHEN salary > 600 AND salary <= 800  THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END salary_class,
COUNT(*)
FROM    Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600  THEN '2'
WHEN salary > 600 AND salary <= 800  THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END;

SELECT country,
SUM( CASE WHEN sex = '1' THEN
population ELSE 0 END),  --男性人口
SUM( CASE WHEN sex = '2' THEN
population ELSE 0 END)   --女性人口
FROM  Table_A
GROUP BY country;

CONSTRAINT check_salary CHECK
( CASE WHEN sex = '2'
THEN CASE WHEN salary > 1000
THEN 1 ELSE 0 END
ELSE 1 END = 1 )

CONSTRAINT check_salary CHECK
( sex = '2' AND salary > 1000 )

Select top 100 State,JoinState,

(case when State=1 and Joinstate=0 then 2 when State=1 and JoinState=1 then 1 else 0 end) as usestate from UserInfo

(2)

select      ID,Username,namer=(case when(score<='50')    then '实习'

when(score>'50'  and  score<='500' )   then '赤脚医生'

when(score>'500'  and score<='1000' )   then '村卫生员'

when(score>'1000'  and score<='1500' )   then '乡卫生员'

when(score>'1500'  and score<='2000' )   then '镇卫生员'

when(score>'2000'  and score<='3000' )   then '医师'

when(score>'3000'  and score<='5000' )   then '主治医师'

when(score>'5000'  and score<='10000' )   then '副主任医师'

when(score>'10000'  and score<='20000' )   then '主任医师'

when(score>'20000'  and score<='50000' )   then '健康大使'

else   '健康大使'  end ), (SELECT count(id)

FROM  jk01_YiWen_Question

WHERE  UserID =  dbo.jk01_Member.ID)  as  questionnum

from  jk01_Member

#### MSSQL 2005 SQL利用Case When Then多条件判断

2013-07-05 14:43:02

#### 在SQL的查询条件中使用case when取数据

2016-06-08 16:54:25

#### 2、SQL Server：SQL利用Case When Then多条件判断SQL 语句

2017-02-13 20:27:34

#### case when多个条件，一个表两个字段： type，status

2016-09-26 22:43:03

#### 数据库多条件查询 CASE... WHEN

2014-09-24 23:02:04

#### case when 多条件， 只更新一列

2015-07-21 15:52:13

#### T-SQL语句之case when then 多条件判断

2013-01-21 10:25:05

#### sql case when 的使用以及别名问题

2015-04-14 17:13:17

#### sql语句update中多个case/when的写法

2017-02-22 10:51:00

#### SQL CASE 多条件用法

2016-05-25 18:44:04

## 不良信息举报

SQL利用Case When Then多条件判断