INSERT INTO @table(a,b,c,d)
SELECT a,b,c,d
FROM table1
UNION
SELECT a,b,c,d
FROM table2
Non è necessario utilizzare la clausola Values quando si inseriscono dati utilizzando l'istruzione SELECT. Pertanto ho rimosso i VALUES
bit da esso e semplicemente facendo un'UNION di righe restituite da entrambe le query SELECT.
Il server SQL supporta la sintassi per l'istruzione INSERT come
INSERT INTO Table_Name(Col1, COl2. Col3...)
SELECT Col1, COl2. Col3...
FROM Other_Table_Name
Questo inserirà il set di risultati restituito dall'istruzione select nella tabella di destinazione. Nel tuo caso il Risultato è un'UNIONE di due selezioni quindi non è diverso da una singola selezione.