Isso acontece quando uma linha de destino corresponde a mais de uma linha de origem.
Uma instrução MERGE não pode atualizar/excluir a mesma linha da tabela de destino várias vezes.
O erro é bastante auto-explicativo, eu acho.
Você tem linhas duplicadas na tabela de origem. Então, para uma linha com
Rownumber = X
em Rows
tabela há mais de uma linha com Rowno = X
em Temp_info
tabela. O SQL Server gostaria de saber qual linha dessas linhas duplicadas na tabela de origem usar para a atualização em uma linha na tabela de destino.
[Editar]
Em resposta à sua resposta:uma das opções é duplicar, antes de executar a mesclagem:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Eu usei
DOB
como o campo que define a ordem para saber qual é o último. Substitua este campo pelo que você deseja que seja usado para o pedido.