Hola listeros,

Tengo que resolver lo siguiente y no sé cómo:

Tengo una tabla A con datos que se copian tal cual a la tabla B
De forma que la tabla B tiene quedar igual que la A, o sea, lo que sobra se
borra, lo que falta se inserta y lo que está se actualiza.

Intenté resolverlo con CASE pero no puedo hacer más que SELECT dentro de
cada opción del case
con IF tampoco puede resolverlo

La idea es resolverlo en una sóla consulta determinando qué actualizar,
insertar, borrar con joins, eso funciona, según el valor de un campo
resultado sé qué tengo que hacer, el tema es que no sé cómo hacer que haga
una u otra cosa dentro de la misma consulta, intenté con CTE pero no le
encontré la vuelta, pego algo que hice a ver si me pueden dar una idea, o
ver por dónde tengo que encararlo, gracias de antemano


with t (clave1origen, clave1destino) as

(

select o.clave1 clave1origen, d.clave1 clave1destino from

origen o full outer join destino d

on o.clave1 = d.clave1

and

o.clave2 = d.clave2

)



select case

when t.clave1origen is null then

--insertar

 insert into destino (clave1, valor) value (t.clave1, t.valor)

 when t.clave1origen is not null and t.clave1destino is not null then

'actualiza'

when t.clave1origen is not null and t.clave1destino is null then

'insertar'

end

from (

select o.clave1 clave1origen, d.clave1 clave1destino, o.valor valor from

origen o full outer join destino d

on o.clave1 = d.clave1

and

o.clave2 = d.clave2) t



-- 
Leonardo Micheloni.

http://leomicheloni.blogspot.com/

Responder a