我有两个表:主表和源表。 两个表都有3列。 它们是ID,项目说明和标价。 “源”表的“项目描述”中有一些空值。

我要做的是将Source表合并到Master中。 但是,如果“源”表中的描述字段为空,则不要更改主表中的描述。

有没有更好的方法可以重写它? 看起来有点重复。这是我的尝试。

    Breakdown:
    1) When matched and if description in source is null, only update id 
       and price
    2) When matched update
    3) Insert into Master table if Source table has new ids



MERGE INTO MASTER AS MS
USING       SOURCE AS SRC
ON        (MS.id = SRC.id)
WHEN MATCHED AND SRC.item_deSRC is NULL THEN
UPDATE SET MS.id = SRC.id
           MS.List_Price = SRC.List_Price
WHEN MATCHED THEN
UPDATE SET MS.id = SRC.id
,          MS.Description = SRC.Description
,          MS.List_Price = SRC.List_Price
WHEN NOT MATCHED THEN
INSERT VALUES(MS.id, MS.description, MS.List_Price)

===============>>#1 票数:2 已采纳

您应该在执行此操作时出现错误,如下所示:

消息10714,级别15,状态1,行在MERGE语句的“ UPDATE”子句中,“ WHEN MATCHED”类型的操作不能出现多次。

代替

WHEN MATCHED AND SRC.item_deSRC is NULL THEN
UPDATE SET MS.id = SRC.id
           MS.List_Price = SRC.List_Price
WHEN MATCHED THEN
UPDATE SET MS.id = SRC.id
,          MS.Description = SRC.Description
,          MS.List_Price = SRC.List_Price

尝试

WHEN MATCHED THEN
UPDATE SET MS.Description = ISNULL(SRC.Description,MS.Description)
          ,MS.List_Price = SRC.List_Price

这应该是正确的,减少重复,并删除多余的“ SET MS.id = SRC.id”

  ask by Le_RedditUser translate from so

未解决问题?本站智能推荐: