2013-01-14 30 views
6

का उपयोग कर SQL सर्वर तालिका में एकाधिक पंक्तियों को सम्मिलित करना मैं वर्तमान में SQL Server 2008 का उपयोग कर रहा हूं, और मैं तालिका में एकाधिक पंक्तियों को सम्मिलित करने के लिए तालिका चर का उपयोग करके एक कथन बनाने का प्रयास कर रहा हूं। चूंकि यह अभी खड़ा है, मुझे 4 अलग-अलग स्पॉट्स (2 चयन कथन, 1 डालने और 1 अपडेट) में जोड़े जाने वाली जानकारी डालना है, लेकिन एक टेबल वैरिएबल बनाने में सक्षम होना चाहते हैं, इसलिए मुझे केवल प्रवेश करना होगा एक बार जानकारी किसी भी मदद/सुझावों की सराहना की जाएगी।तालिका परिवर्तक

यह एक उदाहरण है जिसे मैं बदलने की कोशिश कर रहा हूं।

PRINT 'Before' 
SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ 
WHERE groupID in(ID1, ID2, ID3, ID4)                

BEGIN TRAN 


Insert into TableXYZ 
(GROUPID) 
VALUES 
(ID1), (ID2), (ID3), (ID4)                



UPDATE TableXYZ 
SET existingdays = 15 
    ,ModifiedBy = @userID 
    ,ModifiedDate = @today 
WHERE groupID in(ID1, ID2, ID3, ID4)                


Set @RowCount = @@ROWCOUNT 


PRINT 'After ' 

SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ 
WHERE groupID in(ID1, ID2, ID3, ID4)  
+2

यह स्पष्ट नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं - एक टीवी टीवी दो चयन, एक सम्मिलन और अद्यतन को प्रतिस्थापित करने में सक्षम क्यों होगा? – Oded

+0

क्या आप अपने प्रश्न को और अधिक विस्तृत समझा सकते हैं? –

+0

यदि आप एक वैरिएबल के साथ एक टेबल को फिर से लक्षित करना चाहते हैं तो AFAIK, आपको अपने कन्वर्ट और अन्य सभी क्वेरी कोड को कंसेट करने के लिए 'CONCAT() 'का उपयोग करके ** अपनी क्वेरी के अंदर एक (तैयार) कथन ** बनाना होगा। – inhan

उत्तर

8

यह है कि क्या आप केवल जानकारी एक बार में प्रवेश के मामले में तलाश कर रहे हैं है?

DECLARE @IDList TABLE 
(
    ID INT 
) 

INSERT INTO @IDList (ID) 
VALUES 
    (ID1) 
    ,(ID2) 
    ,(ID3) 
    ,(ID4) 

PRINT 'Before' 
SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 

BEGIN TRAN 


Insert into TableXYZ 
(GROUPID) 
SELECT ID 
FROM @IDList 


UPDATE TableXYZ 
SET existingdays = 15 
    ,ModifiedBy = @userID 
    ,ModifiedDate = @today 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 


Set @RowCount = @@ROWCOUNT 


PRINT 'After ' 

SELECT GROUPID, ModifiedBy, ModifiedDate 
FROM TableXYZ AS T 
    INNER JOIN @IDList AS L 
     ON T.GroupID = L.ID 
1

table2 से table1 मूल्यों में सम्मिलित करने के लिए:

INSERT INTO table1 (column1) 
SELECT col1 
FROM table2 
+1

बदलना चाहता हूं और निश्चित रूप से, यहां 'table2' को ** तालिका चर ** होना चाहिए और इस प्रकार यह 'table2' होना चाहिए –