oracle行转列列转行
时间: 2023-09-09 16:10:41 浏览: 125
在Oracle中,行转列和列转行操作可以通过使用聚合函数和递归查询来实现。下面我将为你提供一些示例代码来说明这两种操作。
行转列:
1. 使用聚合函数和CASE语句实现行转列:
```sql
SELECT
MAX(CASE WHEN column_name = 'Value1' THEN value END) AS Value1,
MAX(CASE WHEN column_name = 'Value2' THEN value END) AS Value2,
MAX(CASE WHEN column_name = 'Value3' THEN value END) AS Value3
FROM
your_table;
```
2. 使用PIVOT语句实现行转列(需要Oracle 11g及以上版本):
```sql
SELECT *
FROM
your_table
PIVOT (
MAX(value)
FOR column_name IN ('Value1', 'Value2', 'Value3')
);
```
列转行:
1. 使用UNION ALL连接多个查询结果实现列转行:
```sql
SELECT 'Value1' AS column_name, Value1 AS value FROM your_table
UNION ALL
SELECT 'Value2' AS column_name, Value2 AS value FROM your_table
UNION ALL
SELECT 'Value3' AS column_name, Value3 AS value FROM your_table;
```
2. 使用UNPIVOT语句实现列转行(需要Oracle 11g及以上版本):
```sql
SELECT column_name, value
FROM your_table
UNPIVOT (
value FOR column_name IN (Value1, Value2, Value3)
);
```
通过使用上述代码示例,你可以根据自己的需求进行行转列或列转行操作。请注意,根据你的具体数据结构和要求,可能需要进行一些适当的调整。
阅读全文