You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Oracle数据库中TABLE1表的行列转置?

Oracle表转置实现方法

针对你的TABLE1表转置需求,可以通过UNPIVOT+PIVOT组合的SQL语句实现,具体代码如下:

SELECT col_name,
       "1", "2", "3", "4", "5", "6"
FROM (
    -- 给原表每行添加行号,标记原始记录顺序
    SELECT REG, SB, VKYC, ROWNUM AS rn
    FROM TABLE1
)
-- 将原表的列转换为行,同时定义显示的列名
UNPIVOT (
    col_value FOR col_name IN (REG AS 'Reg', SB AS 'Sb', VKYC AS 'Vkyc')
)
-- 将行号转换为列,对应原始表的每条记录
PIVOT (
    MAX(col_value) FOR rn IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5", 6 AS "6")
);

执行逻辑说明:

  1. 添加行号:子查询通过ROWNUM给TABLE1的每条记录分配唯一行号,确保转置后列的顺序和原始插入顺序一致;
  2. 列转行(UNPIVOT):把原表的REG、SB、VKYC三列拆分为两列:col_name存储列的显示名称,col_value存储对应的值,同时保留行号关联原始记录;
  3. 行转列(PIVOT):以行号为维度,将每个行号对应的值转为一列,用MAX()聚合是因为每个col_name+rn组合仅对应一个值,聚合函数不影响结果。

如果你的TABLE1记录行数不固定,可以使用动态SQL生成列名,这里针对固定6行的场景,静态SQL即可满足需求。

内容的提问来源于stack exchange,提问作者Bala S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:26:06