SQLServer 行转列的三种方法
在数据库操作中,有时候需要将表中的行数据转换为列数据,或者反过来,将列数据转换为行数据。这种需求在数据分析和报表制作等场景中比较常见。SQLServer提供了三种实现行转列的方法,分别是:
1.使用PIVOT关键字
2.使用CASE表达式
3.使用动态SQL语句
下面我们分别介绍这三种方法,并给出示例。
使用PIVOT关键字
PIVOT是SQLServer 2005及以后版本引入的一个新特性,它可以将表中的某一列的值作为新表的列名,并根据指定的聚合函数对另一列的值进行计算。PIVOT的语法格式如下:
例如,假设我们有一个学生考试成绩表,如下所示:
| 学号 | 姓名 | 科目 | 成绩 |
| 1001 | 张三 | 语文 | 80 |
| 1001 | 张三 | 数学 | 90 |
| 1001 | 张三 | 英语 | 85 |
| 1002 | 李四 | 语文 | 75 |
| 1002 | 李四 | 数学 | 95 |
| 1002 | 李四 | 英语 | 80 |