2011-10-30 18 views
5

के साथ टेम्पल टेबल बनाना, मुझे अपनी वर्तमान स्थिति में कोई समस्या है, मैंने नेट पर किसी भी समाधान की खोज की लेकिन फिर भी मैं इसे प्राप्त नहीं कर सकता।एसक्यूएल सर्वर: डायनामिक कॉलम

यहाँ प्रश्न:

मैं SQL कथन के अंदर कर्सर का उपयोग, बयानों में से प्रत्येक एक अलग डेटाबेस से चयन करके एक डालने प्रदर्शन कर रहा है और साथ ही द्वारा एक संग्रहीत प्रक्रिया में क्रियान्वित किया जा करने की जरूरत है कि का एक समूह है तालिका।

उदाहरण के लिए:

INSERT INTO Database1.Table1(column1, column2, column3) 
    SELECT column1,column2, column3 
    FROM Database2.Table2 
    WHERE --Some Condition 

और हो सकता है एक और मार डाला SQL विवरण इस

INSERT INTO Database1.Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

ठीक है, मूल रूप से मेरी प्रक्रिया की तरह है इस

Execute Sql to insert into temp Tables --> Insert into a permanent Table from Temp Tables 

दो SQL कथन ऊपर से की तरह है , डेटाबेस 2 या 3 से मेरा निष्पादित परिणाम या 4,5 और आदि हो सकता है। मैं अपने डेटाबेस 1 f पर जाऊंगा या स्थायी दुकान। यह कहने का अधिक सारांश तरीका है, मैं बस डेटा की एक और प्रतिलिपि बनाना चाहता हूं जो डाटाबेस के विभिन्न स्रोतों से मिलता है और कुछ और प्रोसेसिंग करने के लिए मेरे स्थानीय डेटाबेस में स्टोर करता है।

मेरी मुख्य समस्या यह है कि मेरे व्यक्ति प्रभारी (या प्रबंधक) ने मुझे स्थायी रूप से निष्पादित करने से पहले सभी निष्पादित परिणाम को एक TEMP तालिका या #Table में हल करने के लिए कहा।

कुछ इस तरह:

INSERT INTO #Table3(column1, column2, column3, column4) 
    SELECT column1, column2, column3, column4 
    FROM Database3.Table3 
    WHERE --Some Condition 

मैं #Temp टेबल पर कुछ शोध के माध्यम से चला गया और मैंने पाया यह उनमें से ज्यादातर 'ठीक' कॉलम के साथ पैदा कर रही है इस तरह के रूप

CREATE TABLE #Table 
(
    column1 VARCHAR(10), 
    column2 VARCHAR(10), 
    column3 VARCHAR(10) 
) 

समस्या: नहीं है वैसे भी इसे गतिशील कॉलम के साथ बनाने के लिए? पूछने का अधिक विस्तार तरीका, क्या कॉलम उपसर्ग किए बिना #Temp तालिका में चयन करके डालने के लिए वैसे भी है? क्योंकि मेरे लिए निष्पादित एसक्यूएल के लिए अस्थायी तालिका का एक गुच्छा बनाना असंभव है।

धन्यवाद

पी एस 1: मैं काफी एसक्यूएल सर्वर के लिए एक नौसिखिया हूँ, कृपया मेरी गलती या त्रुटि बाहर आवाज संकोच नहीं करते। हम सब गलतियों से सीखते हैं।

पीएस 2: मेरे खराब अंग्रेजी स्तर के लिए खेद है, मैंने इसे और अधिक स्पष्ट रूप से विस्तारित करने की पूरी कोशिश की।

सादर:

LiangCk

+2

आप 'उपयोग कर सकते हैं coloum1, coloum2, coloum3, coloum4 का चयन करें जांच # Table3 Database3.Table3' से' SELECT' के परिणामों के आधार पर तालिका बनाने के लिए। क्या यही मतलब है तुम्हारा? –

+0

नहीं, इसकी आवश्यकता नहीं है क्योंकि यह कुछ सौ वर्गमीटर से निपट सकता है जो उनमें से प्रत्येक को अलग-अलग कॉलम हो सकता है। यदि मैं करता हूं जो मैंने किया है, तो इसका मतलब है कि मैं कुछ सौ टेम्पे टेबल बना सकता हूं? – Worgon

+0

मुझे यकीन नहीं है कि आप क्या हासिल करना चाहते हैं; जैसा कि मैं इसे समझता हूं, आपके पास विभिन्न कॉलम के साथ कई तालिकाओं हैं, और आपको इस डेटा को अस्थायी तालिका में डालने की आवश्यकता है। क्या आप केवल एक बैकअप नहीं बना सकते हैं और पूरे डेटाबेस को अस्थायी डेटाबेस में पुनर्स्थापित कर सकते हैं? या तो, या आपको विभिन्न अस्थायी तालिकाओं का एक समूह प्रबंधित करने की आवश्यकता होगी। –

उत्तर

5

आप कहते हैं कि आप पहली बार तय कॉलम के साथ अस्थायी तालिका बनाने के लिए बिना

 


INSERT INTO #Table3(coloum1,coloum2,coloum3,coloum4) 
Select coloum1,coloum2,coloum3,coloum4 
FROM Database3.Table3 
WHERE --Some Condition 

 

की तरह कुछ करना चाहते हैं।

यह काम करेगा:

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

 

आप अस्थायी तालिका बनाने या पहले कॉलम निर्दिष्ट करते हैं, सिर्फ अस्थायी तालिका में चयन करने के लिए की जरूरत नहीं है और यह मक्खी पर बनाया जाएगा।

ऐसा लगता है कि आप इससे कुछ और करना चाहते हैं ... मैं यह नहीं समझ सकता कि यह क्या है, लेकिन ऐसा लगता है कि विभिन्न टेबलों से आपके सभी डेटा को एक अस्थायी तालिका में चुनना (मैं नहीं करता यह नहीं पता कि आप ऐसा क्यों करना चाहते हैं) ... यदि ऐसा है तो UNION या UNION ALL काम करना चाहिए। आप अभी भी इन गतिशील रूप से बनाई गई temp तालिका के साथ उपयोग कर सकते हैं।

 


Select coloum1,coloum2,coloum3,coloum4 
INTO #Table3 
FROM Database3.Table3 
WHERE --Some Condition 

UNION 

Select column1, column2, column3, null 
FROM Database1.Table1 
WHERE --Some condition 

 

ऊपर null सिर्फ 2 पहले (मैं अपने पद से दोनों चयन किया जाता है) के रूप में स्तंभों की एक ही नंबर का चयन दे रहा है; यह UNION के लिए एक आवश्यकता है।

+0

या, धन्यवाद जेरेमी ... यह वही है जो मुझे चाहिए .. – Worgon

संबंधित मुद्दे