sqlserver2008 如何实现行转列
时间: 2023-09-25 08:16:23 浏览: 72
Sql实现行转列的方法
在 SQL Server 2008 中,可以使用 PIVOT 关键字将行数据转换为列数据。下面是一个示例:
假设有一个表格(Table1)包含以下数据:
ID | Name | Score
---|------|------
1 | Tom | 80
2 | John | 90
3 | Lily | 85
现在我们想要将 Score 转换为列数据,即将表格转换为如下形式:
Name | Score1 | Score2 | Score3
-----|--------|--------|-------
Tom | 80 | NULL | NULL
John | NULL | 90 | NULL
Lily | NULL | NULL | 85
我们可以使用以下 SQL 语句来实现:
```
SELECT Name,
[1] AS Score1,
[2] AS Score2,
[3] AS Score3
FROM
(SELECT ID, Name, Score FROM Table1) AS SourceTable
PIVOT
(
MAX(Score)
FOR ID IN ([1], [2], [3])
) AS PivotTable;
```
这个查询首先将数据从 Table1 表格中选出,并将其转换为 SourceTable,然后使用 PIVOT 关键字将行转换为列。在 PIVOT 子句中,我们指定了要转换的列(ID),以及要转换为列的值(Score),并使用 MAX 函数对 Score 进行聚合。最后,我们使用 AS 关键字为输出的列命名。
阅读全文