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

Oracle SQL:多列转多行并拼接colNum字段格式求助

解决方案

方法1:使用UNPIVOT结合字符串拼接

通过UNPIVOT完成列转行后,从生成的列名中提取序号,再与原colNum拼接:

SELECT 
    CONCAT(colNum, '-', SUBSTRING(col_name, 4, 1), '-U') AS new_colNum,
    col_value
FROM test
UNPIVOT (
    col_value FOR col_name IN (Col1, Col2, Col3)
) AS unpvt;

说明:

  • UNPIVOT将Col1/Col2/Col3的列名存入col_name字段,对应值存入col_value
  • SUBSTRING(col_name, 4, 1)提取列名末尾的数字(如从Col1中提取1)
  • 用CONCAT拼接成要求的原colNum-列序号-U格式

方法2:使用UNION ALL(列数较少时更直观)

直接对每一列单独处理后合并结果:

SELECT CONCAT(colNum, '-1-U') AS new_colNum, Col1 AS col_value FROM test
UNION ALL
SELECT CONCAT(colNum, '-2-U') AS new_colNum, Col2 AS col_value FROM test
UNION ALL
SELECT CONCAT(colNum, '-3-U') AS new_colNum, Col3 AS col_value FROM test
ORDER BY new_colNum;

说明:

  • 每一行查询对应原表的一列,手动指定列序号拼接new_colNum
  • 最后用ORDER BY保证结果按new_colNum排序,与原数据逻辑顺序一致

两种方法执行后都会得到如下结果:

new_colNumcol_value
1-1-U123
1-2-U341
1-3-U635
2-1-U323
2-2-U434
2-3-U343

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:30:09