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

DB2中将1行3列数据转换为3行1列数据的SQL查询实现方法

在DB2中将单行多列数据转换为多行单列的方法

嘿,这个列转行的需求在DB2里很好解决,我给你分享两种实用的方法:

方法一:使用UNION ALL拼接结果集

这是最直观的方式,适合列数不多的场景,通过多次查询分别提取每一列的值,再合并结果:

SELECT id, person1 AS person
FROM your_table
WHERE id = 1 -- 若需处理所有行,可删除此条件
UNION ALL
SELECT id, person2 AS person
FROM your_table
WHERE id = 1
UNION ALL
SELECT id, person3 AS person
FROM your_table
WHERE id = 1;

这段代码会分别查询person1、person2、person3三列的数据,每一列都映射为person字段,同时保留对应的id,最后用UNION ALL把三个结果集合并,就能得到你要的3行结构。

方法二:使用UNNEST结合数组(DB2 11.1+适用)

如果你的DB2版本是11.1及以上,用数组+UNNEST的方式会更简洁,尤其适合列数较多的情况:

SELECT id, person
FROM your_table,
     UNNEST(ARRAY[person1, person2, person3]) AS t(person)
WHERE id = 1; -- 按需保留或删除条件

这里我们把三个person列打包成一个数组,再用UNNEST函数将数组拆分为多行,每一行对应数组中的一个元素,轻松实现列转行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:32:44