ऐसा तब होता है जब एक लक्ष्य पंक्ति एक से अधिक स्रोत पंक्ति से मेल खाती है।
एक MERGE कथन लक्ष्य तालिका की एक ही पंक्ति को कई बार अद्यतन/हटा नहीं सकता है।
मुझे लगता है कि त्रुटि बहुत आत्म-व्याख्यात्मक है।
आपके पास स्रोत तालिका में डुप्लिकेट पंक्तियाँ हैं। तो Rownumber = X
. के साथ एक पंक्ति के लिए Rows
. में तालिका में Rowno = X
. के साथ एक से अधिक पंक्तियाँ हैं Temp_info
. में टेबल।
SQL सर्वर यह जानना चाहता है कि लक्ष्य तालिका में एक पंक्ति पर अद्यतन के लिए स्रोत तालिका में उन डुप्लिकेट पंक्तियों में से कौन सी पंक्ति का उपयोग करना है।
[संपादित करें]
आपके उत्तर के जवाब में:मर्ज चलाने से पहले विकल्पों में से एक डुप्लिकेट करना है:
with cte
as
(
select row_number() over(partition by RowNo order by DOB desc) RowNumber
from Temp_info
)
delete cte
where RowNumber > 1
मैंने DOB
. का इस्तेमाल किया उस क्षेत्र के रूप में जो यह जानने के लिए आदेश को परिभाषित करता है कि अंतिम क्या है। इस फ़ील्ड को उस फ़ील्ड से बदलें जिसे आप ऑर्डर के लिए उपयोग करना चाहते हैं।