行转列和列转行oracle的函数
时间: 2024-05-14 15:10:09 浏览: 107
在Oracle数据库中,行转列和列转行是一种常见的数据转换操作,可以通过使用Oracle的PIVOT和UNPIVOT函数来实现。
1. 行转列(PIVOT):
行转列是将一行数据转换为多列数据的操作。在Oracle中,可以使用PIVOT函数来实现行转列操作。Pivot函数将行数据按照指定的列进行分组,并将每个分组的值转换为新的列。
例如,假设有以下表格"sales":
```
+---------+-------+-------+
| Product | Month | Sales |
+---------+-------+-------+
| A | Jan | 100 |
| A | Feb | 200 |
| B | Jan | 150 |
| B | Feb | 250 |
+--+-------+
```
可以使用PIVOT函数将上述表格按照月份进行行转列操作:
```sql
SELECT *
FROM sales
PIVOT (
SUM(Sales)
FOR Month IN ('Jan', 'Feb')
);
```
结果如下:
```
+--+-----+-----+
| A | 100 | 200 |
| B | 150 | 250 |
+---------+-----+-----+
```
2. 列转行(UNPIVOT):
列转行是将多列数据转换为一行数据的操作。在Oracle中,可以使用UNPIVOT函数来实现列转行操作。Unpivot函数将指定的列转换为新的行。
例如,假设有以下表格"sales":
```
+--+-----+
| A | 100 | 200 |
| B | 150 | 250 |
+---------+-----+-----+
```
可以使用UNPIVOT函数将上述表格进行列转行操作:
```sql
SELECT *
FROM sales
UNPIVOT (
Sales
FOR Month IN (Jan, Feb)
);
```
结果如下:
```
+---------+-------+-------+
| Product | Month | Sales |
+---------+-------+-------+
| A | Jan | 100 |
| A | Feb | 200 |
| B | Jan | 150 |
| B | Feb | 250 |
+--+-------+
```
阅读全文