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
相关产品推荐
相关产品推荐

