oracle pivot()
时间: 2023-12-04 16:06:02 浏览: 95
`PIVOT` 是 Oracle 数据库用于将行转换为列的一种数据透视功能。它允许您将行数据转换为列,并使您可以从表中提取信息。`PIVOT` 操作涉及在原始查询中使用聚合函数和 `GROUP BY` 子句来生成中间结果,然后使用 `PIVOT` 子句将中间结果重新组合成新的表。
以下是一个使用 `PIVOT` 的简单示例:
假设我们有以下 `SALES` 表:
| PRODUCT | REGION | QUANTITY |
|---------|--------|----------|
| A | East | 10 |
| A | West | 20 |
| B | East | 15 |
| B | West | 25 |
现在,我们想要以 `PRODUCT` 为行,以 `REGION` 为列,并显示每个 `REGION` 中每个 `PRODUCT` 的销售总量。我们可以使用以下查询语句:
```
SELECT *
FROM (SELECT product, region, quantity FROM sales)
PIVOT (SUM(quantity) FOR region IN ('East', 'West'))
ORDER BY product;
```
该查询将生成以下结果:
| PRODUCT | 'East'_SUM(QUANTITY) | 'West'_SUM(QUANTITY) |
|---------|---------------------|----------------------|
| A | 10 | 20 |
| B | 15 | 25 |
在这个例子中,我们首先从 `SALES` 表中选择了 `product`、`region` 和 `quantity` 列。然后,我们使用 `PIVOT` 操作将 `region` 列的值转换为列名,并将每个 `region` 中的 `quantity` 值聚合为总和。最后,我们按 `product` 列对结果进行排序。
阅读全文