ACCESS行转列SQL语句汇总成绩实例
时间: 2023-09-09 08:06:09 浏览: 124
假设有如下成绩表格:
| 学号 | 语文 | 数学 | 英语 |
| ---- | ---- | ---- | ---- |
| 001 | 80 | 90 | 85 |
| 002 | 75 | 85 | 90 |
| 003 | 90 | 95 | 92 |
要求将上表格转换成以下格式:
| 学号 | 科目 | 成绩 |
| ---- | ---- | ---- |
| 001 | 语文 | 80 |
| 001 | 数学 | 90 |
| 001 | 英语 | 85 |
| 002 | 语文 | 75 |
| 002 | 数学 | 85 |
| 002 | 英语 | 90 |
| 003 | 语文 | 90 |
| 003 | 数学 | 95 |
| 003 | 英语 | 92 |
可以使用如下SQL语句实现:
```
SELECT 学号, '语文' AS 科目, 语文 AS 成绩 FROM 成绩表格
UNION ALL
SELECT 学号, '数学' AS 科目, 数学 AS 成绩 FROM 成绩表格
UNION ALL
SELECT 学号, '英语' AS 科目, 英语 AS 成绩 FROM 成绩表格
```
解析:
1. 使用UNION ALL将三个子查询的结果合并成一个结果集。
2. 每个子查询中选取相应的科目和成绩,并使用AS关键字给列取别名。
注意事项:
1. 如果成绩表格中的科目不固定,可以使用动态SQL语句实现行转列。
2. 在使用UNION ALL合并结果集时,需要保证每个子查询中选取的列数和列名相同。