Problèmes avec SQL Server instruction MERGE

Table Source

Id, Name, Address
1   A     #202
1   A     #203
1   A     #204
2   A     #202

Table Cible

Id, Name, Address
1   A     NULL

Après Fusion

Id, Name, Address
1   A     #202
2   A     #202

Je suis en utilisant ce SQL

create table #S   (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
create table #T   (ID int, Name varchar(25) NULL, Address varchar(25) NULL)

 INSERT #S values(1, 'A', '#202')
 INSERT #S values(1, 'A', '#203')
 INSERT #S values(1, 'A', '#203')
 INSERT #S values(1, 'A', '#204')

 INSERT #T values(1, 'A', NULL)

 MERGE #T USING
  (
Select id, name, address 
from #S
  ) AS S(id,name,address)
 on #T.id=S.id and #T.Name=S.Name
 when not matched THEN
    INSERT values(S.id,S.Name, S.Address)
 when matched then
    update set Address = S.Address;
 GO 

 Select * from #T
 GO 

 Select * from #S
 GO 

Ce qui provoque une erreur

Msg 8672, Niveau 16, État 1, Ligne 18
L'instruction MERGE tenté de mettre à JOUR ou SUPPRIMER la même ligne plus d'une fois. Cela se produit lorsqu'une ligne cible correspond à plus d'une ligne source. Une instruction MERGE ne peut pas mettre à JOUR/SUPPRIMER la même ligne de la table cible à plusieurs reprises. Affiner la clause d'assurer une ligne cible correspond au plus une ligne source, ou de l'utilisation de la clause GROUP BY pour regrouper les lignes source.

Je veux mettre à jour la ligne dans Une avec la valeur de l'Adresse de l'un des trois valeurs correspondantes. Comment faire cela?

OriginalL'auteur R.D | 2009-09-16