Insert from select en SQL Server

Insertar registros con una select

Para hacer un insert para añadir registros a una tabla a partir de una sentencia Select en SQL Server se puede hacer algo tan simple como esto:

insert into mi_tabla_destino
select * from mi_tabla_origen

 

Insertar registros con nombre de campo o diferente número con una select

Eso siempre que los campos de ambas tablas sean iguales. Si no coinciden exactamente, en número, nombre, etc., en lugar de utilizar el * hay que indicar el nombre de los campos que vamos a utilizar en la tabla origen y la tabla destino:

insert into mi_tabla_destino (campo_destino1, campo_destino2, campo_destino3)
select (campo_origen1, campo_origen2, campo_origen3)

 

Crear una nueva tabla a partir de una select (CTAS)

Esto si la tabla ya existe, si lo que se quiere es crear una nueva tabla a partir de los datos de una select sobre otras tablas, algo conocido como CTAS (Create As Select), la sintaxis de la sentencia cambia un poco:

SELECT * INTO dbo.Destination FROM dbo.SourceSELECT * INTO dbo.Destination FROM dbo.SourceSELECT * INTO dbo.Destination FROM dbo.SourceSELECT * INTO dbo.Destination FROM dbo.SourceSELECT * INTO dbo.Destination FROM dbo.Sourceselect * into mi_nueva_tabla_destino from mi_tabla_origen