INSERT INTO @table(a,b,c,d)
SELECT a,b,c,d
FROM table1
UNION
SELECT a,b,c,d
FROM table2
Nie musisz używać klauzuli Values podczas wstawiania danych za pomocą instrukcji SELECT. Dlatego usunąłem VALUES
nieco od niego i po prostu wykonując UNION wierszy zwracanych z obu zapytań SELECT.
Serwer Sql obsługuje składnię instrukcji INSERT, taką jak
INSERT INTO Table_Name(Col1, COl2. Col3...)
SELECT Col1, COl2. Col3...
FROM Other_Table_Name
Spowoduje to wstawienie zestawu wyników zwróconego przez instrukcję select do tabeli docelowej. W twoim przypadku wynik jest UNIĄ dwóch selekcji, dlatego nie różni się niczym od pojedynczego selekcji.