sql 函数 CASE WHEN

sql 函数 CASE WHEN,第1张

一、含义

        case when 相当于 java 语言中的 if {} esle {} 判断、switch case 语句。该语句执行时,先对条件进行判断,然后根据判断结果进行响应的 *** 作。

        Case 有两种格式:简单Case函数 和 Case搜索函数

简单Case 函数:

CASE num

WHEN '1' THEN '小学生'

WHEN '2' THEN '中学生'

WHEN '3' THEN '高中生'

WHEN '4' THEN '大学生'

ELSE ‘未知错误’ END

Case 搜索函数:

CASE 

WHEN num = '1' THEN '小学生'

WHEN num = '2' THEN '中学生'

WHEN num = '3' THEN '高中生'

WHEN num = '4' THEN '大学生'

ELSE ‘未知错误’ END

THEN 后边的值应与ELSE的值类型相同,否则会报错,如下:

CASE SCORE WHEN '1' THEN '小学生' ELSE 0 END

'优'和0数据类型不一致则报错: 

[Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER

二、示例

老师要统计班中有多少男生,多少女生,及格的男生有多少,及格的女生有多少

表结构如下:其中STU_SEX字段,0表示男生,1表示女生。

STU_IDSTU_NAMESTU_SEXSTU_SCORE
1a088
2b055
3c045
4d166
5e177
6f188

查询语句如下:

SELECT 
	SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
	SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS
FROM 
	THTF_STUDENTS

输出:

MALE_COUNTFEMALE_COUNTMALE_PASSFEMALE_PASS
3313

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/734036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存