Dette sker, når en målrække matcher mere end én kilderække.
En MERGE-sætning kan ikke OPDATERE/SLETTE den samme række i måltabellen flere gange.
Fejlen er ret selvforklarende, synes jeg.
Du har dublerede rækker i kildetabellen. Altså for en række med Rownumber = X
i Rows
tabel er der mere end én række med Rowno = X
i Temp_info
tabel.
SQL-serveren vil gerne vide, hvilken række fra disse duplikerede rækker i kildetabellen, der skal bruges til opdateringen på én række i måltabellen.
[Rediger]
Som svar på dit svar:en af mulighederne er at duplikere, før du kører sammenfletningen:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Jeg brugte DOB
som det felt, der definerer orden for at vide, hvad der er det sidste. Erstat dette felt med det, du ønsker skal bruges til bestilling.