我试图用源表中的值更新目标表中的不同字段。更新可能针对不同的表列,我希望动态设置。
似乎我不能使用“dest.[@fieldname]”来动态设置值。我有办法做到这一点吗?
DECLARE @FieldName VARCHAR(50) = ''
SET @FieldName =
CASE
WHEN @FieldCode = 0 THEN 'type'
WHEN @FieldCode = 1 THEN 'name'
WHEN @FieldCode = 2 THEN 'age'
END
MERGE INTO DestTable dest
USING #tempTable src
ON dest.record_id = src.record_id
WHEN MATCHED
THEN UPDATE SET
***dest.[@FieldName]***= src.value END;
2条答案
按热度按时间dwbf0jvd1#
您始终可以使用动态查询。在这种情况下,还可以按条件更新所有字段:
您还可以使用动态查询:
iih3973s2#
您可以通过if-else逻辑进行静态查询。
或者可以有一个update语句。基于
@fieldcode
,您正在更新src.value,如果不同的字段代码,那么您将使用相同的值进行更新。