sqlserver2008 如何实现列转行
时间: 2023-09-25 20:16:30 浏览: 94
在 SQL Server 2008 中,你可以使用 UNPIVOT 操作符实现列转行。
UNPIVOT 操作符可以将列转换为行。它将每个选定列转换为一个新的行,并将该行的值存储在一个新的列中。下面是一个简单的例子:
假设你有以下表:
```
CREATE TABLE TestTable (ID int, Name varchar(50), Score1 int, Score2 int, Score3 int);
```
表中有 ID、Name 和三个 Score 列。现在你想将这三个 Score 列转换为一列 Score 和一列 ScoreType,ScoreType 包含原始列的名称。你可以使用以下查询:
```
SELECT ID, Name, ScoreType, Score
FROM TestTable
UNPIVOT (Score FOR ScoreType IN (Score1, Score2, Score3)) AS unpvt;
```
UNPIVOT 操作符将 Score1、Score2 和 Score3 列转换为一列 Score 和一列 ScoreType,ScoreType 包含原始列的名称。最终结果如下:
```
ID Name ScoreType Score
1 John Score1 80
1 John Score2 85
1 John Score3 90
2 Mary Score1 75
2 Mary Score2 85
2 Mary Score3 95
```
这样就实现了列转行。
阅读全文