Existem duas maneiras diferentes de implementar a inserção de dados de uma tabela para outra.
Para tabela existente - INSERT INTO SELECT
Este método é usado quando a tabela já foi criada no banco de dados anteriormente e os dados devem ser inseridos nessa tabela a partir de outra tabela. Se as colunas listadas na cláusula insert e select forem iguais, não será necessário listá-las. É uma boa prática sempre listá-los para fins de legibilidade e escalabilidade.
----Create testable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
Para tabela não existente - SELECT INTO
Este método é usado quando a tabela não é criada anteriormente e precisa ser criada quando os dados de uma tabela devem ser inseridos na tabela recém-criada de outra tabela. A nova tabela é criada com os mesmos tipos de dados que as colunas selecionadas.
----Create a new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
Ref 1 2