Dit gebeurt wanneer een doelrij overeenkomt met meer dan één bronrij.
Een MERGE-instructie kan dezelfde rij van de doeltabel niet meerdere keren BIJWERKEN/VERWIJDEREN.
De fout is vrij duidelijk, denk ik.
U heeft dubbele rijen in de brontabel. Dus voor één rij met Rownumber = X
in Rows
tabel zijn er meer dan één rij met Rowno = X
in Temp_info
tafel.
SQL-server wil graag weten welke rij van die dubbele rijen in de brontabel moet worden gebruikt voor de update op één rij in de doeltabel.
[Bewerken]
Als antwoord op uw antwoord:een van de opties is om te dupliceren, voordat u de samenvoeging uitvoert:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Ik gebruikte DOB
als het veld dat de volgorde definieert om te weten wat de laatste is. Vervang dit veld door het veld dat u voor de bestelling wilt gebruiken.