sql case 嵌套
时间: 2023-07-05 20:24:35 浏览: 51
可以在 SQL 的 CASE 表达式中嵌套其他的 CASE 表达式。例如:
```
SELECT
id,
CASE
WHEN age < 18 THEN '青少年'
WHEN age >= 18 AND age <= 40 THEN
CASE
WHEN gender = 'male' THEN '男性成年人'
WHEN gender = 'female' THEN '女性成年人'
ELSE '成年人'
END
ELSE '老年人'
END AS age_group
FROM users;
```
上面的 SQL 查询根据用户的年龄和性别将其归为三个年龄段:青少年、成年人和老年人。当用户年龄在 18 到 40 岁之间时,会进一步根据其性别进行细分。其中,CASE 表达式嵌套了另一个 CASE 表达式,这样可以实现更加复杂的逻辑。
相关问题
sql多表嵌套case when
当需要对多个表进行复杂的条件判断时,可以使用嵌套的CASE WHEN语句。以下是一个示例:
```
SELECT CASE
WHEN table1.column1 = 'value1' THEN
CASE
WHEN table2.column2 = 'value2' THEN 'result1'
ELSE 'result2'
END
ELSE 'result3'
END AS result
FROM table1
JOIN table2 ON table1.id = table2.table1_id
```
在此示例中,我们首先使用一个CASE WHEN语句来判断table1中的column1是否等于'value1'。如果是,则进一步使用另一个嵌套的CASE WHEN语句来判断table2中的column2是否等于'value2'。如果是,则返回'result1',否则返回'result2'。如果table1中的column1不等于'value1',则直接返回'result3'。JOIN语句用于连接两个表,以便我们可以在查询中同时使用它们。
sql中case when 多层嵌套
在 SQL 中,CASE WHEN 可以进行多层嵌套。例如:
```
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN
CASE
WHEN condition3 THEN result2
ELSE result3
END
ELSE result4
END
FROM table;
```
在上面的语句中,首先判断 condition1,如果为真,则返回 result1;如果为假,则判断 condition2,如果为真,则继续判断 condition3,如果为真,则返回 result2,如果为假,则返回 result3;如果 condition2 为假,则返回 result4。