0
我能够执行我的存储过程。当我再次执行它而不是更新现有值时,将从源中插入相同的值作为新值。将数据类型转换合并存储过程
即我的目标有
1
2
3
当我运行存储过程第二次,而不是更新1,2,3,这是对于插入时相同
1
2
3
1
2
3
我的状态匹配,然后选择S.REPORT_TEST1,除了T.REPORT_TEST1不起作用。
当我在不具有数据转换的不同表上使用相同的代码时,我可以更新。
任何人都可以告诉我哪里错了吗?
CREATE PROCEDURE [dbo].[Merge]
INSERT INTO .[dbo].[TARGET](REPORT_TEST1, REPORT_TEST2, REPOST_TEST3)
FROM (MERGE [dbo].[TARGET] T
USING (SELECT
Cast([REPORT TEST1] as int) [REPORT_TEST1],
Cast([REPORT TEST2] as int) [REPORT_TEST2],
Cast([REPORT TEST3] as int) [REPORT_TEST3]
FROM
[dbo].[SOURCE]) S ON (T.[REPORT_TEST1] = S.[REPORT_TEST1])
WHEN NOT MATCHED BY TARGET
THEN INSERT
VALUES (S.REPORT_TEST1, S.REPORT_TEST2, S.REPOST_TEST3)
WHEN MATCHED
AND EXISTS (SELECT S.REPORT_TEST1, S.REPORT_TEST2, S.REPOST_TEST3
EXCEPT
SELECT T.REPORT_TEST1, T.REPORT_TEST2, T.REPOST_TEST3)
OUTPUT $ACTION ACTION_OUT,
S.REPORT_TEST1, S.REPORT_TEST2, S.REPOST_TEST3) ;
感谢
感谢您的回复。 – Durga
除了在合并工作,但'当不符合目标然后插入'插入重复。 – Durga