MERGE 语句产生多个 "Invalid column name"
MERGE statement produces multiple "Invalid column name"
我正在尝试在以下过程中使用 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
但是我在程序执行后收到以下错误:
Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyType'.
Invalid column name 'AnomalyType'.
好像所有的别名都是正确的,我不明白为什么会出现这个错误。
有什么解决办法吗?提前致谢。
问题是您在 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
我正在尝试在以下过程中使用 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
但是我在程序执行后收到以下错误:
Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyCategoryID'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyTypeDesc'.
Invalid column name 'AnomalyType'.
Invalid column name 'AnomalyType'.
好像所有的别名都是正确的,我不明白为什么会出现这个错误。
有什么解决办法吗?提前致谢。
问题是您在 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