case when case when 的列
时间: 2023-12-07 16:39:50 浏览: 75
根据提供的引用内容,case when语句可以用于根据条件对列进行分类和排序。case when case when语句是指在case when语句中嵌套另一个case when语句。下面是一个示例:
```sql
SELECT name,
CASE
WHEN age > 60 THEN
CASE
WHEN gender = 'M' THEN 'Senior Male'
ELSE 'Senior Female'
END
ELSE
CASE
WHEN gender = 'M' THEN 'Male'
ELSE 'Female'
END
END AS category
FROM persons;
```
在上面的示例中,我们使用了两个嵌套的case when语句来对人员进行分类。首先,我们根据年龄将人员分为两组:60岁以上和60岁以下。然后,我们在每个组中使用另一个case when语句来根据性别进一步分类。
相关问题
case when case when
CASE WHEN语句是一种在SQL中使用的条件表达式,它允许根据不同的条件返回不同的结果。而CASE WHEN语句可以嵌套使用,形成CASE WHEN嵌套结构。
下面是一个示例:
```
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
```
在上面的示例中,column_name是要查询的列名,condition1、condition2等是条件表达式,result1、result2等是满足对应条件时返回的结果,ELSE result是当没有任何条件满足时返回的默认结果。
case when列转行
根据提供的引用内容,case when是一种MySQL中的条件语句,用于根据条件返回不同的结果。而列转行是一种数据转换的方式,将原本在列中的数据转换为行中的数据。在MySQL中,可以使用case when语句实现列转行的功能。具体实现方法可以参考以下步骤:
1. 使用UNION ALL将多个SELECT语句的结果合并为一个结果集。
2. 在每个SELECT语句中使用case when语句,将需要转换的列作为条件,将对应的值作为结果。
3. 在每个SELECT语句中添加一个标识列,用于区分不同的行。
4. 在最外层的SELECT语句中使用GROUP BY语句,将结果按照标识列进行分组。
这样就可以将原本在列中的数据转换为行中的数据了。例如,假设有一个表格包含学生姓名和成绩,需要将成绩转换为行中的数据,可以使用以下SQL语句:
```
SELECT '语文' AS subject,
MAX(CASE WHEN name = '张三' THEN score ELSE NULL END) AS '张三',
MAX(CASE WHEN name = '李四' THEN score ELSE NULL END) AS '李四',
MAX(CASE WHEN name = '王五' THEN score ELSE NULL END) AS '王五'
FROM scores
UNION ALL
SELECT '数学' AS subject,
MAX(CASE WHEN name = '张三' THEN score ELSE NULL END) AS '张三',
MAX(CASE WHEN name = '李四' THEN score ELSE NULL END) AS '李四',
MAX(CASE WHEN name = '王五' THEN score ELSE NULL END) AS '王五'
FROM scores
UNION ALL
SELECT '英语' AS subject,
MAX(CASE WHEN name = '张三' THEN score ELSE NULL END) AS '张三',
MAX(CASE WHEN name = '李四' THEN score ELSE NULL END) AS '李四',
MAX(CASE WHEN name = '王五' THEN score ELSE NULL END) AS '王五'
FROM scores
GROUP BY subject;
```
这个SQL语句将成绩表格中的数据按照学科和学生进行了转换,将每个学生在不同学科下的成绩转换为了行中的数据。
阅读全文