case when 行列转换
时间: 2023-08-19 13:15:27 浏览: 63
引用[1]中的SQL语句是一个行转列的例子,它使用了CASE WHEN语句将score_001表中的科目列转换为了多个新的列。具体来说,它将语文、数学、英语和物理这四个科目分别转换为了yuwen、shuxue、yingyu和wuli这四个新的列。如果某个学生的分数是该科目,则在对应的新列中显示该分数,否则显示0。最后,通过GROUP BY子句按班级进行分组,并按班级升序排序。
引用[3]中的SQL语句也是一个行转列的例子,它使用了CASE WHEN语句将性别和部门列转换为了新的列。具体来说,它将性别列转换为了sex列,将部门列转换为了dept列。在转换过程中,使用了CASE WHEN语句将原始的性别和部门值映射为新的值。最后,通过SELECT语句选择了name、sex和dept这三个新列。
所以,CASE WHEN语句可以用于行列转换,通过根据条件将原始数据转换为新的列或新的值。
相关问题
SQL case when 行列转换
你可以使用 SQL 的 CASE WHEN 语句来进行行列转换。下面是一个示例,假设你有一个包含年份和销售额的表格,你想将每年的销售额作为列名,而每个月的销售额作为对应的值。
```sql
SELECT
YEAR,
SUM(CASE WHEN MONTH = 1 THEN Sales ELSE 0 END) AS January,
SUM(CASE WHEN MONTH = 2 THEN Sales ELSE 0 END) AS February,
SUM(CASE WHEN MONTH = 3 THEN Sales ELSE 0 END) AS March,
-- 继续添加其他月份...
FROM
YourTable
GROUP BY
YEAR;
```
在上述示例中,我们使用了 CASE WHEN 语句来根据月份将每个销售额放在对应的列上。如果月份不匹配,则填入0。最后我们使用了 GROUP BY 子句,按年份进行分组。
请根据你的具体需求修改表名、列名和条件。这只是一个简单的示例,你可以根据自己的情况进行调整。
oracle case when 行列转换
Oracle中的CASE WHEN语句可以用于行列转换,具体实现方法如下:
1. 使用SELECT语句查询需要转换的数据,并使用CASE WHEN语句将需要转换的列转换为行。
2. 使用PIVOT语句将转换后的数据进行列转行操作。
例如,将以下表格中的性别列转换为行:
| 姓名 | 性别 |
| ---- | ---- |
| 张三 | 男 |
| 李四 | 女 |
| 王五 | 男 |
可以使用以下SQL语句进行转换:
SELECT *
FROM (
SELECT 姓名, 性别
FROM 表名
)
PIVOT (
COUNT(姓名)
FOR 性别 IN ('男', '女')
);
转换后的结果如下:
| 姓名 | '男' | '女' |
| ---- | ---- | ---- |
| 张三 | 1 | 0 |
| 李四 | 0 | 1 |
| 王五 | 1 | 0 |
其中,'男'和'女'是转换后的列名,1表示该行对应的姓名是该性别,0表示不是该性别。