简体   繁体   English

MERGE 语句产生多个“无效的列名”

[英]MERGE statement produces multiple “Invalid column name”

I'm trying to use the MERGE statement in the following procedure:我正在尝试在以下过程中使用 MERGE 语句:

BEGIN

    MERGE INTO dm_udm.D_ANOMALY_TYPES_CATEGORY AS DIM
    USING (SELECT ID AS ID_ANOMALY_TYPES_CATEGORY
            ,AnomalyType
            ,AnomalyCategoryID
            ,AnomalyTypeDesc
        FROM src_udm.AnomalyTypesCategory
    )AS STG (
             ID_ANOMALY_TYPES_CATEGORY
            ,DES_ANOMALY_TYPE
            ,ID_ANOMALY_CATEGORY
            ,DES_ANOMALY_TYPE_DESC
            )
    ON DIM.ID_ANOMALY_TYPES_CATEGORY=STG.ID_ANOMALY_TYPES_CATEGORY
    WHEN MATCHED
        THEN UPDATE SET                     
        DIM.ID_ANOMALY_TYPES_CATEGORY           =   STG.ID_ANOMALY_TYPES_CATEGORY
        ,DIM.DES_ANOMALY_TYPE                   =   STG.AnomalyType
        ,DIM.ID_ANOMALY_CATEGORY                =   STG.AnomalyCategoryID
        ,DIM.DES_ANOMALY_TYPE_DESC              =   STG.AnomalyTypeDesc
    WHEN NOT MATCHED BY TARGET
    THEN INSERT
        (
            ID_ANOMALY_TYPES_CATEGORY   
            ,DES_ANOMALY_TYPE           
            ,ID_ANOMALY_CATEGORY            
            ,DES_ANOMALY_TYPE_DESC      
        )
    VALUES
        (
            STG.ID_ANOMALY_TYPES_CATEGORY
            ,STG.AnomalyType
            ,STG.AnomalyCategoryID
            ,STG.AnomalyTypeDesc
        );
END

But I'm receiving the following error after the procedure execution:但我在程序执行后收到以下错误:

Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyType'.
Invalid column name 'AnomalyType'.

It seems that all aliases are correct and I don't understand why I get this errors.似乎所有别名都是正确的,我不明白为什么会出现此错误。

Any ideas on how to solve it?关于如何解决它的任何想法? Thanks in advance.提前致谢。

The problem is you are using Aliases after AS STG, try the following:问题是您在 AS STG 之后使用别名,请尝试以下操作:

BEGIN

    MERGE INTO dm_udm.D_ANOMALY_TYPES_CATEGORY AS DIM
    USING (SELECT ID AS ID_ANOMALY_TYPES_CATEGORY
            ,AnomalyType
            ,AnomalyCategoryID
            ,AnomalyTypeDesc
        FROM src_udm.AnomalyTypesCategory
    )AS STG 
    ON DIM.ID_ANOMALY_TYPES_CATEGORY=STG.ID_ANOMALY_TYPES_CATEGORY
    WHEN MATCHED
        THEN UPDATE SET                     
        DIM.ID_ANOMALY_TYPES_CATEGORY           =   STG.ID_ANOMALY_TYPES_CATEGORY
        ,DIM.DES_ANOMALY_TYPE                   =   STG.AnomalyType
        ,DIM.ID_ANOMALY_CATEGORY                =   STG.AnomalyCategoryID
        ,DIM.DES_ANOMALY_TYPE_DESC              =   STG.AnomalyTypeDesc
    WHEN NOT MATCHED BY TARGET
    THEN INSERT
        (
            ID_ANOMALY_TYPES_CATEGORY   
            ,DES_ANOMALY_TYPE           
            ,ID_ANOMALY_CATEGORY            
            ,DES_ANOMALY_TYPE_DESC      
        )
    VALUES
        (
            STG.ID_ANOMALY_TYPES_CATEGORY
            ,STG.AnomalyType
            ,STG.AnomalyCategoryID
            ,STG.AnomalyTypeDesc
        );
END

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM