Oracle行转列
时间: 2023-09-02 13:09:36 浏览: 98
Oracle中可以使用PIVOT操作将行数据转换为列数据。PIVOT操作需要指定要进行转换的列和转换后生成的列,可以使用聚合函数对转换后的列进行计算。
例如,假设有一个表格sales_data,包含以下数据:
| product_id | month | sales |
|------------|-------|-------|
| 1 | Jan | 100 |
| 1 | Feb | 200 |
| 1 | Mar | 150 |
| 2 | Jan | 300 |
| 2 | Feb | 250 |
| 2 | Mar | 180 |
现在需要将每个产品每个月的销售额转换为列数据,可以使用以下SQL语句:
```
SELECT *
FROM (
SELECT product_id, month, sales
FROM sales_data
)
PIVOT (
SUM(sales)
FOR month IN ('Jan', 'Feb', 'Mar')
)
```
此时,将会生成以下结果:
| PRODUCT_ID | 'Jan' | 'Feb' | 'Mar' |
|------------|---------|---------|---------|
| 1 | 100 | 200 | 150 |
| 2 | 300 | 250 | 180 |
其中,每个产品的销售额被转换为了对应月份的列数据。
阅读全文