SQL如何按硬性约束合并两张表补全缺失值
实现逻辑
以table1的时间区间为唯一基准(table1的enter_date、exit_date均为准确值),仅对table1中标记为.的缺失字段,用table2中id、enter_date、exit_date三个字段完全匹配的记录的对应值填充,table2中与table1时间区间不匹配的重合记录直接丢弃。
通用SQL实现
SELECT t1.id, COALESCE(NULLIF(t1.id2, '.'), t2.id2) AS id2, t1.enter_date, t1.exit_date, COALESCE(NULLIF(t1.type, '.'), t2.type) AS type FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id AND t1.enter_date = t2.enter_date AND t1.exit_date = t2.exit_date
适配说明
如果使用的数据库不支持NULLIF函数,可替换为CASE WHEN写法,示例:
-- 替换NULLIF(t1.id2, '.')为 CASE WHEN t1.id2 = '.' THEN NULL ELSE t1.id2 END
内容的提问来源于stack exchange,提问作者seb
相关产品推荐
相关产品推荐

