2011-06-23 10 views
8

Tengo una consulta de ejemplo, como se muestra a continuación:¿Cómo mover los resultados de la consulta UNION a una nueva tabla?

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

¿Cómo puedo mover esta solicitud de estas consultas en una tabla nueva? Nota: Mi verison de SQL es:

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) 

he intentado otra respuesta Stackoverflow he encontrado, es decir

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

pero me da un error de: Incorrect syntax near the keyword 'as'.

Aquí fue mi consulta completa que falló con el error anterior:

CREATE TABLE #temp_UNION as 


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

Cualquier sugerencia por favor o ¿Cómo me estoy mareando?

Gracias, Ray

Respuesta

12

En SQL Server tiene que usar

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

Más información @http://msdn.microsoft.com/en-us/library/ms188029.aspx

Prueba esto:

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

Perfecto ... funcionó. Pero, ¿qué significa la 'a' después del último paréntesis? – Ray

+0

Es un alias para toda la consulta UNION y SQL Server espera que se asigne un alias a vistas en línea. – Chandu

+0

Gracias, Cybernate. Información muy útil! Sé que se supone que no debo hacer preguntas en los comentarios, pero espero que me disculpen esta vez. ¿Pero puedo consultar por el alias directamente? ¿O es esto puramente por razones sintácticas? – 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

o no necesita usar tabla derivada. Usted puede hacer esto también

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

SELECT * EN #Temp_Union DE [# Temp 1] UNIÓN SELECCIONAR * DE [# Temp 2] UNIÓN SELECCIONAR * DE [# TEMP3] UNION SELECT * FROM [# temp4] UNIÓN SELECCIONAR * DESDE [# temp5]

Cuestiones relacionadas