मैं एक मेज से सम्मिलित करने के लिए कोशिश कर रहा हूँ दूसरे में द्वाराSQL सर्वर 2005 ROW_NUMBER() के आदेश के बिना
DECLARE @IDOffset int;
SELECT @IDOffset = MAX(ISNULL(ID,0)) FROM TargetTable
INSERT INTO TargetTable(ID, FIELD)
SELECT [Increment] + @IDOffset ,FeildValue
FROM SourceTable
WHERE [somecondition]
TargetTable.ID का उपयोग कर एक पहचान स्तंभ है, जिसके कारण मैं ऑटो के लिए एक रास्ता खोजने के लिए नहीं है इसे स्वयं बनाओ।
मुझे पता है कि मैं एक कर्सर का उपयोग कर सकता हूं, या एक पहचान कॉलम और फील्डवेल्यू फ़ील्ड के साथ एक टेबल वैरिएबल बना सकता हूं, इसे पॉप्युलेट करें, फिर इसे अपने insert into...select
में उपयोग करें, लेकिन यह बहुत ही कुशल नहीं है। मैंने वृद्धि के लिए ROW_NUMBER फ़ंक्शन का उपयोग करने का प्रयास किया, लेकिन मेरे पास वास्तव में SourceTable में फ़ील्ड द्वारा वैध ऑर्डर नहीं है जिसका उपयोग मैं कर सकता हूं, और SourceTable (यदि संभव हो) का मूल क्रम रखना चाहता हूं।
क्या कोई भी कुछ सुझा सकता है?
स्रोत मेज पर क्लस्टर सूचकांक क्या है? मुझे लगता है कि जब आप "स्रोतटेबल के मूल क्रम" कहते हैं तो आप यही बात कर रहे हैं? यदि यह एक ढेर है तो कोई विशेष आदेश नहीं है। –