Pentaho(Kettle)中双主键关联表合并属性的实现问题问询
双主键关联合并表实现方案
前提说明
现有两张表均以anys_mes_dia、aircraftreg为联合主键,表1独有的需要输出的字段为dy、add,表2独有的需要输出的字段为cn。
实现逻辑
- 采用全外连接模式关联两张表,保留两个表所有的主键组合记录
- 未匹配到关联记录的行,对应缺失字段自动填充null
通用SQL实现(支持FULL OUTER JOIN的数据库:PostgreSQL、Oracle、SQL Server等)
SELECT COALESCE(t1.anys_mes_dia, t2.anys_mes_dia) AS anys_mes_dia, COALESCE(t1.aircraftreg, t2.aircraftreg) AS aircraftreg, t1.dy, t1.add, t2.cn FROM 表1 t1 FULL OUTER JOIN 表2 t2 ON t1.anys_mes_dia = t2.anys_mes_dia AND t1.aircraftreg = t2.aircraftreg;
MySQL适配实现(MySQL不支持原生全外连接,用左连接+右连接合并实现)
-- 取表1全部记录+匹配到的表2字段 SELECT t1.anys_mes_dia, t1.aircraftreg, t1.dy, t1.add, t2.cn FROM 表1 t1 LEFT JOIN 表2 t2 ON t1.anys_mes_dia = t2.anys_mes_dia AND t1.aircraftreg = t2.aircraftreg UNION -- 取表2独有的未匹配到表1的记录 SELECT t2.anys_mes_dia, t2.aircraftreg, t1.dy, t1.add, t2.cn FROM 表1 t1 RIGHT JOIN 表2 t2 ON t1.anys_mes_dia = t2.anys_mes_dia AND t1.aircraftreg = t2.aircraftreg;
结果说明
最终输出的结果集完全覆盖你需要的anys_mes_dia、aircraftreg、dy、add、cn5个字段,所有缺失属性会自动填充为null值。
内容的提问来源于stack exchange,提问作者carbassot
相关产品推荐
相关产品推荐

