2010-10-25 7 views
24

Je souhaite créer une nouvelle table dans SQL Server avec la requête suivante. Je suis incapable de comprendre pourquoi cette requête ne fonctionne pas.SÉLECTIONNEZ DANS L'UTILISATION DE UNION QUERY

Query1: Travaux

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

Query2: ne fonctionne pas. Erreur: 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 
) 

Merci!

Répondre

50

Vous devez définir un alias de table pour une table dérivée dans SQL Server:

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

"x" est l'alias de table dans cet exemple.

+0

Lorsque je tente cela, il ne me donne pas la somme du nombre d'enregistrements de TABLE1 et TABLE2, c'est toujours moins. Seriez-vous capable de savoir pourquoi cela arrive? Je vous remercie! – Christa

+1

@Christa - Ceci est probablement dû au fait que la même ligne est dans les deux tables, cela ne fera qu'un enregistrement pour l'union. Si vous utilisez "UNION ALL", cela ne supprimera pas les doublons. – Hashman

1

Vous pouvez aussi essayer:

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

Pas de syntaxe SQL Server. –

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

Cela ne fonctionne que si TABLE_A et Table_B ont les mêmes schémas

+0

Vous pouvez utiliser trois (et quatre si la table est sur une instance de serveur lié) format de nom pour accéder à d'autres schémas et/ou bases de données. –