sqlserver行列转换
时间: 2023-10-08 09:09:48 浏览: 45
在 SQL Server 中进行行列转换可以使用 PIVOT 和 UNPIVOT 操作。
1. 行转列(PIVOT):
PIVOT 操作可以将行数据转换为列数据。以下是一个示例:
```sql
SELECT column1, column2, ...,
[pivot_column1] AS pivot_column1_alias, [pivot_column2] AS pivot_column2_alias, ...
FROM (
SELECT column1, column2, pivot_column, pivot_value
FROM your_table
) AS source_table
PIVOT (
aggregate_function(pivot_value)
FOR pivot_column IN ([pivot_column1], [pivot_column2], ...)
) AS pivot_table;
```
注意替换 `column1`、`column2` 等为你的实际列名,`your_table` 为你的实际表名,`pivot_column1`、`pivot_column2` 等为你要进行行转列的列名。
2. 列转行(UNPIVOT):
UNPIVOT 操作可以将列数据转换为行数据。以下是一个示例:
```sql
SELECT column1, column2, unpivot_column, unpivot_value
FROM your_table
UNPIVOT (
unpivot_value FOR unpivot_column IN ([pivot_column1], [pivot_column2], ...)
) AS unpivot_table;
```
和上面的示例类似,替换 `column1`、`column2` 等为你的实际列名,`your_table` 为你的实际表名,`pivot_column1`、`pivot_column2` 等为你要进行列转行的列名。
请根据你的具体需求,调整上述示例代码中的表名和列名,并选择合适的聚合函数(如 SUM、AVG、MAX 等)进行行列转换。