Oracle 表转置

问题描述 投票:0回答:1

下面是我的桌子

enter image description here

创建表“表1” (“REG”VARCHAR2(20 字节), “SB”VARCHAR2(20字节), “VKYC”VARCHAR2(20 字节) );

插入TABLE1(REG,SB,VKYC)值('1','2','3');

插入TABLE1(REG,SB,VKYC)值('1A','3','6');

插入TABLE1(REG,SB,VKYC)值('2','4','7');

插入TABLE1(REG,SB,VKYC)值('3','5','8');

插入TABLE1(REG,SB,VKYC)值('4','6','9');

插入TABLE1(REG,SB,VKYC)值('5','7','0');

我想要像转置这样的结果

enter image description here

oracle-database plsql oracle11g oracle-sqldeveloper
1个回答
0
投票

最好使用任何用于连接数据库的第三方语言(Java、C#、PHP、Python 等)来完成此操作,因为转置数据是用于显示数据的操作,而在查询数据时并不容易。


但是,如果您想要输出固定数量的行,那么您可以

UNPIVOT
PIVOT
进行转置:

SELECT *
FROM   ( SELECT reg, sb, vkyc,
                ROW_NUMBER() OVER (ORDER BY ROWNUM) AS rn
         FROM   table1 )
       UNPIVOT(value FOR type IN (reg, sb, vkyc))
       PIVOT(MAX(value) FOR rn IN (1, 2, 3, 4, 5, 6));

对于样本数据,输出:

类型 1 2 3 4 5 6
注册 1 1A 2 3 4 5
SB 2 3 4 5 6 7
VKYC 3 6 7 8 9 0

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.