oracle如何将两行转为两列(oracle两行转成两列)

Oracle如何将两行转为两列

在Oracle中,有时候会遇到需要将两行数据转为两列的情况,如下所示:

| ID | Column1 | Column2 |

| :-: | :-: | :-: |

| 1 | A | E |

| 2 | B | F |

需要将上表中的数据转换为如下所示的格式:

| ID | Column3 | Column4 |

| :-: | :-: | :-: |

| 1 | A | E |

| 2 | B | F |

实现该功能的SQL语句如下:

select id, 
max(case when rn = 1 then column1 end) as column3,
max(case when rn = 2 then column1 end) as column4
from (select id, column1, row_number() over(partition by id order by null) as rn
from table_name)
group by id;

其中,max函数用于将两个行中的值转换为两个列,case函数用于将两个行中的值分类别给到两个列中,row_number函数用于给每个ID分组内的行标号标记,partition by id用于对ID字段进行分组,order by null表示不需要按任何内容排序。

代码运行结果为:

| ID | Column3 | Column4 |

| :-: | :-: | :-: |

| 1 | A | E |

| 2 | B | F |

这样就可以将两行数据成功地转换为两列数据。

需要注意的是,该SQL语句中的table_name需要替换为对应的数据表名字。同时,如果需要将多个行转为多个列,也只需要在max函数和case函数中增加相应的列即可。

综上所述,以上是Oracle如何将两行转为两列的实现方法。希望能够对读者了解Oracle数据处理有所帮助。


数据运维技术 » oracle如何将两行转为两列(oracle两行转成两列)