Update em uma tabela com outra tabela - Porem quantidade de linhas diferentes

SQL Server

07/11/2014

Olá Pessoal

Estou atualizando a tabela "ESTOQUECOPIA" com os dados da tabela "ESTOQUEGERAL" até ai tudo bem. Porem a tabela "Estoque Geral" ao final do dia sempre terá mais linhas do que a "EstoqueCopia"

Então como eu faço para alem de "atualizar" as linhas existentes entre "ESTOQUECOPIA" e ESTOQUEGERAL adicionar as linhas a mais que estão dentro de "ESTOQUEGERAL" na tabela "ESTOQUECOPIA".

Código que utilizo parta atualizar as linha existentes.

UPDATE ESTOQUECOPIA SET ESTOQUECOPIA.REFE_COM_BARRA = EstoqueGeral.REFE_COM_BARRA FROM ESTOQUECOPIA INNER JOIN EstoqueGeral ON ESTOQUECOPIA.REFE_COM_BARRA = EstoqueGeral.REFE_COM_BARRA;

O banco é SQL SERVER

Grande Abraço.

Paulo
Paulo Lima

Paulo Lima

Curtidas 0

Respostas

Soeuseijothaz

Soeuseijothaz

07/11/2014

Não sei se entendi bem o seu questionamento, sou meio lerdo.

Mas vamos lá.

Antes de atualizar você deve inserir (INSERT INTO) as linhas a mais de "ESTOQUEGERAL" em "ESTOQUECOPIA" e depois faça o "UPATE".
O exemplo abaixo faz exatamente isto é sé copiar e colar para ver o funcionamento e depois adapte com os campo de suas tabelas.
Existe outras abordagens usando "not exists", mas achei o exemplo a seguir de simples compreensão.

Claro que antes de testar em seus dados faça back.

CREATE TABLE #EstoqueGeral  (linha int)
insert into #EstoqueGeral (linha) values (1)
insert into #EstoqueGeral (linha) values (2)
insert into #EstoqueGeral (linha) values (3)
insert into #EstoqueGeral (linha) values (4)
insert into #EstoqueGeral (linha) values (5)


CREATE TABLE #EstoqueCopia  (linha int)
insert into #EstoqueCopia (linha) values (1)
insert into #EstoqueCopia (linha) values (2)

insert into #EstoqueCopia
select g.linha
from #EstoqueGeral g 
left outer join
#EstoqueCopia
on #EstoqueCopia.linha= g.linha
where #EstoqueCopia.linha is null

select * from #EstoqueGeral
select * from #EstoqueCopia

--drop table #EstoqueGeral
--drop table #EstoqueCopia



Espero que lhe dê uma luz.
GOSTEI 0
POSTAR