2016-04-28 3 views
0

Ich habe zwei Datumsspalten, [START DATE] und [END DATE] und ich möchte nur Datensätze einfügen, deren Datum nicht in jeder Spalte sind. Das ist, was meine Logik wie folgt aussieht:Kombinieren Sie zwei Spalten in der ON-Suchbedingung von MERGE SQL-Server

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], ...); 

Ich habe auch versucht, den Code unten, aber es weiterhin Duplikate einzufügen:

ON (Target.[START DATE] = Source.[START DATE] AND Target.[END DATE] = Source.[END DATE]) 

ich jede Hilfe dankbar würde, danke! schließen

+0

Bitte einige Beispieldaten zur Verfügung stellen und eine Beispielausgabe, die Sie derzeit bekommen. – Steven

Antwort

0

war Dieser Code:

ON (Target.[START DATE] = Source.[START DATE] AND Target.[END DATE] = Source.[END DATE]) 

Es heißt: „wenn sowohl das Startdatum und das Enddatum übereinstimmen, dann die Zeilen passen“.

Wenn Sie wollen „wenn entweder die Startdaten übereinstimmen oder das EndDates Spiel, dann die Zeilen Spiel“ sagen, dann sollten Sie dies tun:

ON (Target.[START DATE] = Source.[START DATE] OR Target.[END DATE] = Source.[END DATE]) 
+0

Das hat funktioniert, danke! Versuchte es gestern, und erkannte jetzt, dass der Grund, warum es nicht gearbeitet hatte, war, weil es keine neuen Aufzeichnungen dann gab ... nicht, weil ODER nicht war, was ich brauchte. –