2011-06-23 9 views
8

Mam kwerendy próbki, jak pokazano poniżej:Jak przenieść wyniki zapytania UNION do nowej tabeli?

SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 

Jak mogę przenieść ten wniosek z tych zapytań do nowej tabeli? Uwaga: My Verison SQL jest:

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) 

Próbowałem inny StackOverflow odpowiedź znalazłem, tj

CREATE TABLE managers AS SELECT * FROM employees WHERE desg = 'MANAGER'; 

ale pojawia się błąd: Incorrect syntax near the keyword 'as'.

Tu był mój pełny zapytanie, które nie powiodło się z powyższym błędem:

CREATE TABLE #temp_UNION as 


SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 

Wszelkie sugestie proszę o n jak się wygłupiam?

Dziękuję Ray

Odpowiedz

12

W SQL Server trzeba użyć

SELECT <COLUMNS_LIST> 
    INTO <NEW_TABLE_NAME> 
    FROM <TABLES, WHERE ETC> 

Więcej informacji @http://msdn.microsoft.com/en-us/library/ms188029.aspx

Spróbuj:

SELECT * 
    INTO #temp_UNION 
FROM 
(
     SELECT  * 
    FROM   [#temp1] 
    UNION 
    SELECT  * 
    FROM   [#temp2] 
    UNION 
    SELECT  * 
    FROM   [#temp3] 
    UNION 
    SELECT  * 
    FROM   [#temp4] 
    UNION 
    SELECT  * 
    FROM   [#temp5] 
) a 
+0

Idealnie ... zadziałało. Ale co znaczy "a" po ostatnim nawiasie? – Ray

+0

Jest to alias dla całego zapytania UNION i SQL Server oczekuje aliasu przypisanego do widoków śródliniowych. – Chandu

+0

Dzięki, Cybernate. Bardzo przydatne informacje! Wiem, że nie powinienem zadawać pytań w komentarzach, ale mam nadzieję, że tym razem mi wybaczysz. Ale czy mogę zapytać bezpośrednio o alias? Czy jest to wyłącznie z powodów składniowych? – Ray

0
insert into temp_UNION 
select * from (
SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 
) 
0

lub nie musisz używać wyprowadzonej tabeli. Można to zrobić za

SELECT * INTO #temp_UNION 
FROM   [#temp1]  
UNION  
SELECT  *  FROM   [#temp2]  
UNION  SELECT  *  FROM   [#temp3]  
UNION  SELECT  *  FROM   [#temp4]  
UNION  SELECT  *  FROM   [#temp5] 
0

SELECT * INTO #Temp_Union FROM [# temp1] UNION SELECT * FROM [# temp2] UNION SELECT * FROM [# temp3] UNION SELECT * FROM [# temp4] UNION SELECT * FROM [# temp5]

Powiązane problemy