简体   繁体   中英

MERGE statement produces multiple “Invalid column name”

I'm trying to use the MERGE statement in the following procedure:

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:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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