SQL匹配维度取值写入同表 同步Extension组Dimension3到目标分组行
SQL字段填充实现方案
操作前置要求:执行更新前必须完整备份
[3E_IDB_Aru].dbo.Material表,防止数据异常无法回滚。
你可以通过关联更新的SQL语句直接实现需求,核心逻辑为匹配目标分组行和Extension分组行的关联维度,将对应Dimension3值写入目标行,SQL Server环境下的实现语句如下:
UPDATE m_target SET m_target.Dimension3 = m_ext.Dimension3 FROM [3E_IDB_Aru].dbo.Material m_target INNER JOIN [3E_IDB_Aru].dbo.Material m_ext ON m_target.P_GUID = m_ext.P_GUID AND m_target.Area = m_ext.Area AND m_target.Dimension1 = m_ext.Dimension1 AND m_target.Dimension2 = m_ext.Dimension2 WHERE m_target.[Group] IN ('Finishing', 'Primer') AND m_ext.[Group] = 'Extension' -- 可选条件:仅更新Dimension3为空的行,避免覆盖已有有效值,不需要可删除该行 AND m_target.Dimension3 IS NULL
验证方法
执行更新前可以通过以下SELECT语句校验匹配结果是否符合预期,确认数据无误后再执行UPDATE操作:
SELECT m_target.P_GUID, m_target.Area, m_target.Dimension1, m_target.Dimension2, m_target.Dimension3 AS 原目标行Dimension3值, m_ext.Dimension3 AS 匹配到的Extension行Dimension3值 FROM [3E_IDB_Aru].dbo.Material m_target INNER JOIN [3E_IDB_Aru].dbo.Material m_ext ON m_target.P_GUID = m_ext.P_GUID AND m_target.Area = m_ext.Area AND m_target.Dimension1 = m_ext.Dimension1 AND m_target.Dimension2 = m_ext.Dimension2 WHERE m_target.[Group] IN ('Finishing', 'Primer') AND m_ext.[Group] = 'Extension'
注意事项
- 上述语法为SQL Server专属语法,若使用其他类型数据库可对应调整关联更新的语法规则
- 若同一关联维度下存在多个Extension行,可额外增加聚合逻辑或过滤条件保证取值唯一
内容的提问来源于stack exchange,提问作者Mikk Tamberg
相关产品推荐
相关产品推荐

