case when case when 的列
时间: 2023-12-07 22:39:50 浏览: 28
根据提供的引用内容,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是一种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语句将成绩表格中的数据按照学科和学生进行了转换,将每个学生在不同学科下的成绩转换为了行中的数据。
sql case when 行转列
在SQL中,可以使用CASE WHEN语句实现行转列的功能。通过CASE WHEN语句,可以根据条件将一组数据显示在一行上。
下面是一个示例,演示如何使用CASE WHEN语句实现行转列:
假设有一个表格名为sales,包含以下字段:部门id(department_id)、月份(month)和收入(revenue)。
```sql
SELECT department_id,
MAX(CASE WHEN month = 'January' THEN revenue END) AS January,
MAX(CASE WHEN month = 'February' THEN revenue END) AS February,
MAX(CASE WHEN month = 'March' THEN revenue END) AS March,
MAX(CASE WHEN month = 'April' THEN revenue END) AS April,
MAX(CASE WHEN month = 'May' THEN revenue END) AS May,
MAX(CASE WHEN month = 'June' THEN revenue END) AS June,
MAX(CASE WHEN month = 'July' THEN revenue END) AS July,
MAX(CASE WHEN month = 'August' THEN revenue END) AS August,
MAX(CASE WHEN month = 'September' THEN revenue END) AS September,
MAX(CASE WHEN month = 'October' THEN revenue END) AS October,
MAX(CASE WHEN month = 'November' THEN revenue END) AS November,
MAX(CASE WHEN month = 'December' THEN revenue END) AS December
FROM sales
GROUP BY department_id;
```
上述查询将根据部门id将每个月的收入转换为对应的列,并将结果按部门id进行分组。