Estoy modificando la estructura de una base de datos. El contenido de varias columnas de la tabla FinancialInstitution debe transferirse a la tabla Persona . La institución financiera está vinculada a la persona con una clave externa. Cada institución financiera necesita la identificación de su persona correspondiente. Por lo tanto, para cada nueva línea insertada en Persona, la identificación de esta nueva línea (IDENTIDAD) debe copiarse nuevamente en la línea correspondiente de FinancialInstitution.
La forma obvia de hacer esto es un código T-SQL iterativo. Pero estoy interesado en saber si es posible hacerlo solo con operaciones basadas en conjuntos.
Imaginé que el nivel interno de tal solicitud sería algo como:
INSERT INTO Person (Street1, Number1, City1, State1, PostCode1, CountryId1, WorkDirectPhone1, Fax1, Email1)
OUTPUT inserted.Id, FinancialInstitution.Id
SELECT Id, Street, Number, City, [State], PostCode, CountryId, PhoneNumber, Fax, Email
FROM FinancialInstitution;
Desafortunadamente, parece que OUTPUT no puede correlacionarse de esa manera ...
fuente

Person? ¿O actualizar las existentes? ¿O quieres insertar enPersony luegoUPDATE FinancialInstitution?Respuestas:
Supongo que podrías (ab) usarlo
MERGEpara esto. Primero cree una tabla (temporal):Luego
MERGEenPerson( en lugar deINSERT), para que pueda usar columnas de las tablas involucradas en laOUTPUTcláusula:Luego use la tabla temporal para
UPDATE FinancialInstitution:Prueba en: SQL-Fiddle
fuente