×

SQL之CASE WHEN用法详解

前端技术网 前端技术网 发表于2024-01-25 03:13:50 浏览3444 评论0

抢沙发发表评论

一、SQL使用CASE WHEN 行转列为什么会出现NULL值

逻辑有问题。

首先你group by性别,但是字段中却不取性别,虽然不是一定不行,但是这样有可能产生问题的时候因为你忽略了一个字段导致你发现不了。

SQL之CASE WHEN用法详解

其次你group by性别,应该是想按性别来分组显示,但是你又用了case when判断语句,一般来说case when很少用在分组语句中,即使一定要用,也应该配合聚合语句(如sum,count等),你这个语法应该是无法通过的。

正确的语句楼下有写你可以看他的,但是其实写得更有逻辑性:

select性别,sum(分数)/count(人名) from students

group by性别

逻辑简单易懂才不容易出错

二、SQL语句中case,when,then的用法

用法如下:

SQL之CASE WHEN用法详解

**代码

SELECT

s.s_id,

s.s_name,

s.s_sex,

CASE

WHENs.s_sex='1'THEN'男'

WHENs.s_sex='2'THEN'女'

ELSE'其他'

ENDassex,

s.s_age,

s.class_id

FROM

t_b_students

WHERE

1=1

这两个结果是一样的:

需要注意的一点是,Case函数只返回第一个限定值,其余的Case将被自动忽略。

扩展资料:

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

简单的例子功能:

CASEsex

WHEN‘1’THEN‘男’

WHEN‘0’THEN‘女’

ELSE‘其他’END

Case搜索函数:

CASEWHENsex=‘1’THEN‘男’

WHENsex=‘0’THEN‘女’

ELSE‘其他’END

显然简单的Case函数天生简洁,但它们只适用于这种单字段单值比较,而Case搜索函数具有适用于所有比较用例的优势。

另一个需要注意的问题是,在Case函数满足了某个条件之后,其余的条件将被自动忽略,这样即使满足了多个条件,在执行过程中也只能识别第一个条件。

当使用CASEWHEN时,您可以将其视为没有字段名的字段,字段值是有条件的,并且在需要使用字段名时可以使用as来定义别名。

非常感谢您的阅读!我们希望本文对于解决您关于SQL之CASE WHEN用法详解和SQL语句中case,when,then的用法的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。