Ini terjadi bila baris target cocok dengan lebih dari satu baris sumber.
Pernyataan MERGE tidak dapat MEMPERBARUI/HAPUS baris yang sama dari tabel target beberapa kali.
Kesalahannya cukup jelas, saya pikir.
Anda memiliki baris duplikat di tabel sumber. Jadi untuk satu baris dengan Rownumber = X
di Rows
tabel ada lebih dari satu baris dengan Rowno = X
di Temp_info
tabel.
SQL server ingin mengetahui baris mana dari baris duplikat di tabel sumber yang akan digunakan untuk pembaruan pada satu baris di tabel target.
[Sunting]
Menanggapi jawaban Anda:salah satu opsi adalah menggandakan, sebelum menjalankan penggabungan:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
Saya menggunakan DOB
sebagai bidang yang mendefinisikan urutan untuk mengetahui apa yang terakhir. Ganti bidang ini dengan yang ingin Anda gunakan untuk pemesanan.