変数をもとにした MERGE

MERGE ステートメントの USING には、テーブル名だけでなく、任意のクエリを記述することができます。したがって、複数のテーブル同士の MERGE だけでなく、任意の変数の値をもとにして、MERGE ステートメントを実行することもできます。

次のように t1 テーブルと、変数 @a と @b があった場合に、MERGE するには、次のように記述します。

DECLARE @a int = 4
       ,@b varchar(100) = 'EEE'

MERGE INTO t1
 USING ( SELECT @a AS a, @b AS b ) var
  ON t1.a = var.a
 WHEN MATCHED THEN
	UPDATE SET t1.b = var.b
 WHEN NOT MATCHED THEN
	INSERT VALUES (var.a, var.b );


そのほかの SQL Server 2008 の新機能の具体的な利用方法については、弊社執筆の SQL Server 2008 自習書シリーズ(下記 URL)の「SQL Server 2008 の注目の新機能をイチ早く試してみよう! 」編を参考にしてみてください。
http://www.microsoft.com/japan/sqlserver/2008/self-learning/default.mspx