2012-07-10 10 views
5

मैं डीबी 2 में निम्न टीएसक्यूएल क्वेरी कैसे करूं? मुझे एक क्वेरी से परिणामों के आधार पर एक temp तालिका बनाने में समस्याएं आ रही हैं।डीबी 2 tsql temp तालिका के समतुल्य

SELECT 
COLUMN_1, COLUMN_2, COLUMN_3 
INTO #TEMP_A 
FROM TABLE_A 
WHERE COLUMN_1 = 1 AND COLUMN_2 = 2 

त्रुटि संदेश है:

"Error: SQL0104N An unexpected token "#TEMP_A" was found following "". Expected tokens may include: ":". SQLSTATE=42601"

+0

अगर मैं डीबी 2 में त्रुटि चलाने मैं निम्न त्रुटि ... "त्रुटि: SQL0104N कोई अनपेक्षित टोकन" #TEMP_A "पाया गया था निम्नलिखित ""। अपेक्षित टोकन में निम्न शामिल हो सकते हैं: ":"। SQLSTATE = 42601 " –

उत्तर

9

आप डीबी 2 में declare a temp table किया है इससे पहले कि आप इसका इस्तेमाल कर सकते हैं:

DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME AS (
    SELECT COLUMN_1, COLUMN_2, COLUMN_3 
    FROM TABLE_A 
) DEFINITION ONLY 

तो यह पॉप्युलेट:

INSERT INTO SESSION.YOUR_TEMP_TABLE_NAME 
SELECT COLUMN_1, COLUMN_2, COLUMN_3 
FROM TABLE_A 
WHERE COLUMN_1 = 1 
    AND COLUMN_2 = 2 

यह जैसा कि सीधे आगे नहीं है एसक्यूएल सर्वर में। :)

और भले ही इसे "वैश्विक" अस्थायी तालिका कहा जाता है, यह केवल वर्तमान सत्र के लिए मौजूद है। ध्यान दें कि सभी temp टेबल SESSION स्कीमा के साथ prefixed किया जाना चाहिए। यदि आप स्कीमा नाम प्रदान नहीं करते हैं, तो SESSION निहित किया जाएगा।

+1

थोड़ा उपयोगी नोट: हो सकता है कि आप" प्रतिबद्ध पंक्तियों को संरक्षित करने "पर" डिफ़ॉल्ट रूप से हटाएं पंक्तियों "के रूप में शामिल होना चाहते हैं और यह व्यवहार संभव नहीं है वांछनीय हो। –

+0

@ रिचर्ड मॉर्गन या सब कुछ एक ही लेनदेन पर चल रहा है। – bhamby

+0

क्या कोड का पहला बिट बस तालिका को परिभाषित करता है या इसे पॉप्युलेट करता है? परिभाषा में table_a से कोई चयन क्यों है? – JSideris

1

हो सकता है "के साथ" खंड है आप के लिए क्या देखो:

with TEMP_A as (
    SELECT COLUMN_1, COLUMN_2, COLUMN_3 
    FROM TABLE_A 
    WHERE COLUMN_1 = 1 AND COLUMN_2 = 2 
) 
-- now use TEMP_A 
select * from TEMP_A 
+1

शायद यह स्पष्ट करें कि यह एक सीटीई है और एक अस्थायी तालिका नहीं है। – eaglei22

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