SQL Server中如何使用PIVOT和UNPIVOT实现行转列和列转行
在SQL Server中,有时我们需要将表中的行数据转换为列数据,或者将列数据转换为行数据,这种操作称为行转列或列转行。SQL Server提供了两个内置的关键字来实现这种功能,分别是PIVOT和UNPIVOT。
PIVOT是将行数据转换为列数据的关键字,它的语法格式如下:
PIVOT的主要步骤如下:
1.首先,选择需要进行行转列的源数据,可以是一张表或者一个子查询,给它一个别名。
2.然后,使用PIVOT关键字,指定一个聚合函数和一个需要聚合的列,这个列通常是数值类型的。
3.接着,指定一个包含需要转换为列名的值的列,这个列通常是字符类型的。
4.最后,指定一个IN子句,列出需要作为新表的列名的值,这些值必须与上一步的列中存在,否则会返回NULL。
举个例子,假设我们有一张学生考试成绩表,如下所示:
| 学号 | 姓名 | 科目 | 成绩 |
| 1001 | 张三 | 语文 | 80 |