Detta händer när en målrad matchar mer än en källrad.
En MERGE-sats kan inte UPPDATERA/RADERA samma rad i måltabellen flera gånger.
Felet är ganska självförklarande, tror jag.
Du har dubbletter av rader i källtabellen. Så för en rad med Rownumber = X
i Rows
tabell finns det mer än en rad med Rowno = X
i Temp_info
bord.
SQL-servern vill veta vilken rad från dessa dubbletter i källtabellen som ska användas för uppdateringen på en rad i måltabellen.
[Redigera]
Som svar på ditt svar:ett av alternativen är att duplicera, innan du kör sammanfogningen:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Jag använde DOB
som fältet som definierar ordning för att veta vad som är det sista. Ersätt detta fält med det som du vill ska användas för beställning.