sqlserver中的pivot
时间: 2023-08-14 19:06:34 浏览: 102
SQL Server中的PIVOT是一种用于转换行数据为列数据的操作,常用于生成交叉表格或报表。它将输入数据中的某些列作为列名,将其它列的值作为对应列名的行数据,从而将行数据转换成列数据。PIVOT操作在使用时需要指定聚合函数来对重复的数据进行合并。
以下是一个简单的例子,假设我们有如下的订单表:
| OrderID | Product | Sales |
|---------|---------|-------|
| 1 | Apple | 10 |
| 1 | Orange | 5 |
| 2 | Apple | 8 |
| 2 | Orange | 12 |
如果我们想要将每个产品的销售额作为列展示,那么可以使用PIVOT操作:
```
SELECT Product, [1] AS Order1, [2] AS Order2
FROM (
SELECT OrderID, Product, Sales
FROM Orders
) AS SourceTable
PIVOT (
SUM(Sales)
FOR OrderID IN ([1], [2])
) AS PivotTable;
```
上述语句会将输入数据转换成如下的形式:
| Product | Order1 | Order2 |
|---------|--------|--------|
| Apple | 10 | 8 |
| Orange | 5 | 12 |
其中,Order1和Order2是原始订单表中的OrderID值,它们被PIVOT操作转换成列名。同时,每个产品的销售额被求和并填充到对应的单元格中。
阅读全文