下面是我的桌子
创建表“表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');
我想要像转置这样的结果
最好使用任何用于连接数据库的第三方语言(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 |