0

私はこのようなマージステートメントを持っています:

MERGE DESTINATION
USING SOURCE WHERE <Some_Conditions>
WHEN MATCHED AND <Some_Conditions> THEN DELETE
WHEN MATCHED UPDATE
WHEN NOT MATCHED INSERT 

これは正常に機能していますが、もう1つの条件があります。つまり、エントリがソースに存在しない場合に、宛先の行を更新する必要があります。

元。

ソース

Column1 Column2 Column3
-----------------------
A        A       A
B        B       B

行き先

Column1 Column2 Column3
-----------------------------------
B        B       <Some_Calculation>
D        D       <Some_Calculation>

ここで、のソースに行がないため、いくつかの計算を使用して宛先Dを変更する必要があります。Column 3ただし、me​​rgeは、の3つのオプションのみを提供し、delete行が一致したかどうかを示します。updateinsert

上記のステートメントでこの機能を実装するにはどうすればよいですか?

編集

以下の私のコメントで質問を編集します:

上記の例では、上記の例が実行されており、更新されて宛先テーブルBに挿入されています。ただし、ソーステーブルに存在しない場合でもA更新したいD

4

1 に答える 1

0

たぶん、のドキュメントを読んでくださいMERGE

MERGE 
[ TOP ( expression ) [ PERCENT ] ] 
[ INTO ] <target_table> [ WITH ( <merge_hint> ) ] [ [ AS ] table_alias ]
USING <table_source> 
ON <merge_search_condition>
[ WHEN MATCHED [ AND <clause_search_condition> ]
    THEN <merge_matched> ] [ ...n ]
[ WHEN NOT MATCHED [ BY TARGET ] [ AND <clause_search_condition> ]
    THEN <merge_not_matched> ]
[ WHEN NOT MATCHED BY SOURCE [ AND <clause_search_condition> ]
    THEN <merge_matched> ] [ ...n ]
...

WHEN NOT MATCHED BY SOURCEあなたが必要なものです

于 2013-01-10T11:16:27.717 に答える