Ciò si verifica quando una riga di destinazione corrisponde a più di una riga di origine.
Un'istruzione MERGE non può UPDATE/DELETE la stessa riga della tabella di destinazione più volte.
L'errore è abbastanza autoesplicativo, credo.
Hai righe duplicate nella tabella di origine. Quindi per una riga con Rownumber = X
in Rows
tabella ci sono più di una riga con Rowno = X
in Temp_info
tabella.
SQL Server vorrebbe sapere quale riga di quelle righe duplicate nella tabella di origine utilizzare per l'aggiornamento su una riga nella tabella di destinazione.
[Modifica]
In risposta alla tua risposta:una delle opzioni è duplicare, prima di eseguire l'unione:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Ho usato DOB
come il campo che definisce l'ordine di sapere qual è l'ultimo. Sostituisci questo campo con quello che desideri venga utilizzato per l'ordine.