2016-04-28 2 views
0

私は2つの日付カラム、[START DATE][END DATE]を持っていますが、いずれかのカラムに日付が含まれていないレコードを挿入したいだけです。これは私のロジックは次のようになります。MERGE SQLサーバのON検索条件で2つのカラムを結合

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

あなたはいくつかのサンプルデータといくつかのサンプル出力を入力してください現在取得中です。 – Steven

答えて

0

このコードは、近くにあった:

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

それは、「開始日と終了日の試合の両方が、その後、行が一致した場合」、と言います。

あなたは、あなたがこれを行う必要があり、「その後、行が一致し、StartDatesマッチやEndDatesマッチのどちらかが」言いたい場合:

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

それはうまくいった、ありがとう!昨日試してみましたが、それがうまくいかなかった理由は、新しいレコードがなかったからです。ORは私が必要としたものではなかったからです。 –

関連する問題