Insertar filas mediante subconsultas INSERT y SELECT
La subconsulta SELECT de la instrucción INSERT se puede utilizar para agregar valores a una tabla de una o más tablas o vistas. Además, utilizar una subconsulta SELECT permite insertar más de una fila al mismo tiempo.
En el siguiente ejemplo, la instrucción INSERT inserta en una tabla independiente algunos de los datos de todas las filas de la tabla Sales.SalesReason en AdventureWorks cuyo SalesReason es Marketing.
USE AdventureWorks;
GO
CREATE TABLE MySalesReason (
SalesReasonID int NOT NULL,
Name nvarchar(50),
ModifiedDate datetime);
GO
INSERT INTO MySalesReason
SELECT SalesReasonID, Name, ModifiedDate
FROM AdventureWorks.Sales.SalesReason
WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate
FROM MySalesReason;
GO
La lista de selección de la subconsulta debe coincidir con la lista de columnas de la instrucción INSERT. Si no se especifica ninguna lista de columnas, la lista de selección debe coincidir con las columnas de la tabla o vista en la que se inserta.
Otro de los usos de la instrucción INSERT…SELECT es insertar datos de un origen externo a SQL Server. SELECT en la instrucción INSERT se puede utilizar para lo siguiente:
Hacer referencia a una tabla remota en un servidor vinculado mediante un nombre de cuatro partes. Para obtener más información, vea Identificar un origen de datos con un nombre de servidor vinculado.
Hacer referencia a una tabla remota al utilizar OPENROWSET. Para obtener más información, vea Identificar un origen de datos con un nombre ad hoc.
Utilizar el conjunto de resultados de una consulta ejecutada en un servidor remoto. Para obtener más información, vea Usar consultas de paso a través como tablas.