Posteado por: edeortuzar | 06/02/2013

Actualización (update) con un select


Para realizar una actualización masiva de una tabla podemos usar el update con un select dentro de la misma sentencia usando, por ejemplo, otra tabla.

Por ejemplo:

update Facturas set
saldo = 0,
vigente = 0 –No
estado = 130 –Cancelada Manualmente
from NotasCredito nc WITH (NOLOCK) inner join Facturas f WITH (NOLOCK) on
nc.cliente = f.cliente and nc.remito = f.remito

En caso que la información con la que queremos hacer la actualización es resultado de un proceso, entiéndase SUM, MAX, GROUP BY, deberemos agregar el resultado de dicho proceso en una tabla temporal para luego hacer el update. Un ejemplo sería:

select
   numeroCliente,
   sum(importe) as SaldoCliente
into #tmpFacturas
from Facturas WITH (NOLOCK)
group by numeroCliente

update Clientes set saldo = tmp.SaldoCliente
from #tmpFacturas tmp WITH (NOLOCK) inner join Clientes cli WITH (NOLOCK) on cli.numeroCliente = tmp.numeroCliente

drop table #tmpFacturas

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: