sql里面pivot函数怎么用,举个例子
时间: 2023-05-19 08:04:07 浏览: 99
Pivot 函数可以将行数据转换为列数据,可以使用以下语法:
SELECT *
FROM (
SELECT [列1], [列2], [值]
FROM [表名]
) AS [源表]
PIVOT (
[聚合函数]([值])
FOR [列名] IN ([列1], [列2], ...)
) AS [结果表]
例如,假设有一个表格名为 Sales,包含以下数据:
| Region | Product | Sales |
|--------|---------|-------|
| East | Apple | 100 |
| East | Banana | 200 |
| West | Apple | 150 |
| West | Banana | 250 |
我们可以使用 Pivot 函数将其转换为以下形式:
| Region | Apple | Banana |
|--------|-------|--------|
| East | 100 | 200 |
| West | 150 | 250 |
具体的 SQL 语句如下:
SELECT *
FROM (
SELECT Region, Product, Sales
FROM Sales
) AS SourceTable
PIVOT (
SUM(Sales)
FOR Product IN (Apple, Banana)
) AS PivotTable
相关问题
sqlserver中pivot函数
SQL Server中的PIVOT函数是一种用于将行数据转换为列数据的表格旋转函数。它可以将一组带有重复值的行数据转换为一个带有唯一值的列数据,以便更方便地进行分析和报告。以下是一个简单的pivot函数示例:
假设我们有一个名为Sales的表,包含以下数据:
| Region | Product | Sales |
|--------|---------|-------|
| East | A | 100 |
| East | B | 200 |
| West | A | 150 |
| West | B | 250 |
我们想要将这些数据按Product列进行旋转,以便我们可以看到每个区域下每个产品的销售总额。我们可以使用PIVOT函数来实现这一点:
```
SELECT Region, [A], [B]
FROM (
SELECT Region, Product, Sales
FROM Sales
) AS s
PIVOT (
SUM(Sales)
FOR Product IN ([A], [B])
) AS p
```
这将返回以下结果:
| Region | A | B |
|--------|-------|-------|
| East | 100 | 200 |
| West | 150 | 250 |
在这个例子中,我们首先从Sales表中选择Region,Product和Sales列。然后我们将这些数据传递给PIVOT函数,其中SUM聚合函数将Sales列的值合并为每个Product的总销售额,并将其旋转到新的列中。最后,我们选择Region和旋转后的列([A]和[B])来创建我们的最终结果集。
oracle pivot函数
Oracle的PIVOT函数是一种数据透视表函数,可以将行数据转换为列数据,从而实现数据的横向展示。它可以将一个查询结果集中的列值,转换成一系列新的列,这些新的列是根据查询结果集中的某一列值动态生成的。这个函数在Oracle 11gR1版本中被引入。
PIVOT函数的语法如下:
```
SELECT <非聚合列>, [<聚合函数>(<列名>) AS <列别名>, ...]
FROM <表名>
PIVOT (
<聚合函数>(<列名>) FOR <PIVOT列> IN ([<列值1>], [<列值2>], ...))
)
```
其中,`<非聚合列>`表示数据透视表中非聚合的列,`<聚合函数>`表示需要进行聚合计算的函数,`<列名>`表示执行聚合计算的列,`<列别名>`表示生成的新列的别名,`<表名>`表示需要进行数据透视的表,`<PIVOT列>`表示需要转换为列的列名,`<列值1>`、`<列值2>`等表示需要转换为列的列值。
举个例子,假设有一个表`sales`,存储了销售数据信息,包括销售员、销售日期和销售额。现在需要按销售日期进行数据透视,将不同的销售员的销售额展示为不同的列。可以使用如下SQL语句:
```
SELECT *
FROM sales
PIVOT (
SUM(amount) AS sales_amount
FOR salesman_name IN ('John', 'Bob', 'Mary')
)
```
这样就可以将原始的数据表按照销售日期进行数据透视,将不同销售员的销售额展示为不同的列。