根据匹配条件回填数据或插入新记录



我有以下有效日期表,其中有数千条记录需要根据某些标准更新/插入。

Car_Specification:

<表类> Effective_Date 赛车 Num_Wheels Num_Doors Engine_Type 颜色 tbody><<tr>01 - 3月- 2021C00142涡轮红01 - 4月- 2021C00142涡轮蓝色01 - jun - 2021C00142涡轮绿色

作为帧挑战。几千条记录只是一个很小的数据集;您不需要合并数据。在原始规格的Car_Specification中,每辆车都有一行,然后如果有变化,就把它们放在Car_Changes中,当你想时,显示最后的值然后选择最后一次更改,或者如果没有更改则选择规格。

SELECT COALESCE(c.effective_date, s.effective_date) AS effective_date,
s.car_id,
COALESCE(c.num_wheels, s.num_wheels) AS num_wheels,
COALESCE(c.num_doors, s.num_doors) AS num_doors,
COALESCE(c.engine_type, s.engine_type) AS engine_type,
COALESCE(c.color, s.color) AS color
FROM   car_specification s
LEFT OUTER JOIN LATERAL(
SELECT *
FROM   car_changes c
WHERE  c.car_id = s.car_id
AND    c.effective_date >= s.effective_date
ORDER BY c.effective_date DESC
FETCH FIRST ROW ONLY
)
ON (1 = 1) -- The join condition is inside the lateral join.

如果你愿意,你可以把它包装在一个视图中。

最新更新