SQL server行转列
时间: 2023-09-27 12:03:57 浏览: 91
SqlServer行转列
在SQL Server中,可以使用PIVOT操作将行转换为列。PIVOT操作基于聚合函数对结果集进行旋转,并将行值转换为列头。
下面是一个例子:
假设我们有一个名为"Products"的表格,其中包含产品名称和产品销售额:
| ProductName | Sales |
| ----------- | ----- |
| ProductA | 100 |
| ProductB | 200 |
| ProductC | 150 |
| ProductD | 300 |
我们想将这个表格转换为以下格式:
| ProductA | ProductB | ProductC | ProductD |
| -------- | -------- | -------- | -------- |
| 100 | 200 | 150 | 300 |
我们可以使用PIVOT操作来实现这个目标:
```
SELECT ProductA, ProductB, ProductC, ProductD
FROM (
SELECT ProductName, Sales
FROM Products
) AS SourceTable
PIVOT (
SUM(Sales)
FOR ProductName IN (ProductA, ProductB, ProductC, ProductD)
) AS PivotTable;
```
在这个查询中,我们首先选择了"ProductName"和"Sales"列,并将它们作为子查询的来源表。然后,我们使用PIVOT操作将"ProductName"列中的值旋转为列头,并使用SUM聚合函数对"Sales"列进行聚合。最后,我们使用别名"PivotTable"来引用结果集。
请注意,PIVOT操作需要在列头中指定每个可能的列值,因此如果有许多列,则查询可能会变得冗长。
阅读全文