PostgreSQL实现多列手机号数据转置,生成按类型拆分的行记录
PostgreSQL 数据转置实现方案
可以通过UNION ALL将原表中对应Personal和Office的两组字段分别查询后合并,同时过滤空值记录,得到目标格式:
SELECT KEY, 'Personal' AS Type, Mobile1 AS "Mobile Number", M1_St_Date AS "St Date", M1_Exp_Date AS "Exp Date" FROM your_table WHERE Mobile1 IS NOT NULL AND Mobile2 != '' UNION ALL SELECT KEY, 'Office' AS Type, Mobile2 AS "Mobile Number", M2_St_Date AS "St Date", M2_Exp_Date AS "Exp Date" FROM your_table WHERE Mobile2 IS NOT NULL AND Mobile2 != '' ORDER BY KEY, Type;
说明:
- 第一个查询块提取
Mobile1对应的Personal类型数据,通过WHERE子句过滤掉手机号为空的记录; - 第二个查询块提取
Mobile2对应的Office类型数据,同样过滤空值; UNION ALL用于合并两个结果集,保留所有符合条件的行(若用UNION会自动去重,这里不需要);- 最后通过
ORDER BY按KEY和Type排序,让同一KEY的记录排列在一起。
替换your_table为你的实际表名即可执行。
内容的提问来源于stack exchange,提问作者datatester
相关产品推荐
相关产品推荐

