SQLServer – Actualizar una tabla con datos de otra

SQLServer – Actualizar una tabla con datos de otra

update from select in sqlserver

MERGE Ofertarestricciones AS target
USING (SELECT idOfertaHotel, hotelDiscount FROM OfertaHotel) AS SOURCE (idOfertaHotel, hotelDiscount)
ON (target.idOfertaHotel = SOURCE.idOfertaHotel)
WHEN MATCHED THEN
UPDATE SET target.Discount = SOURCE.hotelDiscount;

Donde Ofertarestricciones sería la tabla que quieres actualizar (tabla de destino),
USING (SELECT idOfertaHotel, hotelDiscount FROM OfertaHotel) AS source (idOfertaHotel, hotelDiscount) la consulta de origen de datos,
ON (target.idOfertaHotel = source.idOfertaHotel) el producto cartesiano para cruzar las dos tablas y
UPDATE SET target.Discount = source.hotelDiscount; el campo a actualizar de la tabla de origen a la de destino.

Probado y funcional en SQLServer 2008 en adelante. ¡Gracias Costi!

Si necesitas hacer esto mismo en Oracle, es un poco más fácil. con una simple sub-consulta lo tendrás. Aquí tienes cómo hacer un «insert into select» en Oracle: Oracle – Insertar registros desde otra tabla (insert into select)