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数据处理有所帮助。