2010-10-25 8 views
24

Quiero crear una nueva tabla en SQL Server con la siguiente consulta. No puedo entender por qué esta consulta no funciona.SELECCIONAR PARA UTILIZAR LA CONSULTA DE LA UNIÓN

Consulta1: Funciona

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

Query2: no funciona. error: Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near ')'.

SELECT * INTO [NEW_TABLE] 
FROM 
(
SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 
) 

Gracias!

Respuesta

50

tiene que definir un alias de tabla para una tabla derivada en SQL Server:

SELECT x.* 
    INTO [NEW_TABLE] 
    FROM (SELECT * FROM TABLE1 
     UNION 
     SELECT * FROM TABLE2) x 

"x" es el alias de la tabla en este ejemplo.

+0

Cuando intento esto, no me da la suma de número de registros de TABLE1 y TABLE2, siempre es menos. ¿Sabrías por qué sucede esto? ¡Gracias! – Christa

+1

@Christa - Esto probablemente se deba a que tiene la misma fila en ambas tablas, solo hará un registro para la unión. Si usa 'UNION ALL', no eliminará los duplicados. – Hashman

1

También puede probar:

create table new_table as 
select * from table1 
union 
select * from table2 
+3

Sin sintaxis de SQL Server. –

1
select * 
into new_table 
from table_A 
UNION 
Select * 
From table_B 

Esto sólo funciona si TABLE_A y Table_B tienen los mismos esquemas

+0

Puede utilizar tres (y cuatro si la tabla está en una instancia de servidor vinculado) el formato de nombre para acceder a otros esquemas y/o bases de datos. –

Cuestiones relacionadas