我有两个日期列[START DATE]
和[END DATE]
,我想只插入日期不在任一列中的记录。这就是我的逻辑:
MERGE TABLE_A AS Target
USING (SELECT DISTINCT * FROM TABLE_B) AS Source
ON (SELECT Target.[START DATE] + Target.[END DATE] AS Target.[COMPAREDATE] =
SELECT Source.[START DATE] + Source.[END DATE] AS Source.[COMPAREDATE])
WHEN NOT MATCHED THEN
INSERT ([DATE ADDED], [END DATE], ...)
VALUES (Source.[DATE ADDED], Source.[END DATE], ...);
我也尝试了下面的代码,但它继续插入重复项:
ON (Target.[START DATE] = Source.[START DATE] AND Target.[END DATE] = Source.[END DATE])
感谢您的帮助,谢谢!
答案 0 :(得分:0)
此代码已关闭:
ON (Target.[START DATE] = Source.[START DATE] AND Target.[END DATE] = Source.[END DATE])
它说,“如果StartDate和EndDate都匹配,那么行匹配”。
如果你想说“如果StartDates匹配或者EndDates匹配,那么行匹配”,那么你应该这样做:
ON (Target.[START DATE] = Source.[START DATE] OR Target.[END DATE] = Source.[END DATE])