case when实现行转列
时间: 2024-07-26 15:01:28 浏览: 36
CASE WHEN语句是SQL中的一种条件表达式,它用于将行数据转换成列数据,常用于数据分析和报告生成中,特别是当你需要基于特定条件对数据进行分组或计算时。在SQL中,它的基本结构如下:
```sql
SELECT
column1,
CASE
WHEN condition THEN value1
ELSE value2
END AS new_column_name
FROM
table_name;
```
在这个例子中,`column1`是你原始表中的某一列,`condition`是一个判断语句,如果`column1`满足这个条件,那么`value1`会被作为新的值放在`new_column_name`列中;如果不满足,则取`value2`。这有助于你在查询结果中清晰地展示数据按不同情况分类后的值。
相关问题
oralce case when行转列
以下是Oracle中使用CASE WHEN实现行转列的示例:
假设我们有一个表格,其中包含学生的姓名和成绩,我们想要将每个学生的成绩转换为列名,并将其值作为行中的值。我们可以使用以下查询来实现:
```sql
SELECT name,
MAX(CASE WHEN subject = 'Math' THEN score END) AS Math,
MAX(CASE WHEN subject = 'English' THEN score END) AS English,
MAX(CASE WHEN subject = 'Science' THEN score END) AS Science
FROM scores
GROUP BY name;
```
在这个查询中,我们使用了三个CASE WHEN表达式,每个表达式都将特定的科目成绩转换为列名。我们使用MAX函数来获取每个学生的最高分数,并使用GROUP BY子句按姓名分组。
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进行分组。