Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PetrusHenrique

Atualizar dados de uma tabela com base em outra

Recommended Posts

Olá pessoal,

 

Estou com um problema, caso possam me ajudar.

 

Estou trabalhando em um banco de dados SQL Server. Fiz a classificação de produtos em uma tabela wfiscal.CD00015

Só que existe outra tabela chamada wfiscal.DI00015 que também diz respeito a produtos mas em um outro ambiente do sistema. Em ambas as tabelas eu tenho as colunas "Código Situação Tributária" e "Código do Produto".

 

O que eu preciso é atualizar o Código de Situação Tributária da segunda tabela exatamente igual a primeira tabela, quando o Código do Produto for igual em ambos os casos, oq cheguei mais perto foi isso

 

update wfiscal.DI00015
set CdSituacaoTrib = (select CodSitTrib from wfiscal.CD00015
where [wfiscal.DI00015].IdClassificacao = [wfiscal.CD00015].CdCodigo)
Mas não funciona.
Obs: as tabelas correspondentes realmente tem nomes diferentes.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei algo assim também:

 

UPDATE wfiscal.di00015
SET CdSituacaoTrib = [wfiscal.CD00015].CodSitTrib
WHERE
[wfiscal.DI00015].IdClassificacao = [wfiscal.CD00015].CdCodigo
mas fica dando erro
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "wfiscal.DI00015.IdClassificacao" could not be bound.
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "wfiscal.CD00015.CdCodigo" could not be bound.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem se utilizar UPDATE FROM

 

De uma olhada neste caso de uso:

 

 

if object_id ('tempdb..#tabela1') is not null
 
drop table #tabela1
if object_id ('tempdb..#tabela2') is not null
drop table #tabela2
create table #tabela1 (Produto int, lote int, Qtde int)
insert into #tabela1 values (10,1,5)
insert into #tabela1 values (10,2,6)
insert into #tabela1 values (10,3,4)
 
create table #tabela2 (Produto int , Qtde_total int)
insert into #tabela2 (Produto) values (10)
insert into #tabela2 (Produto) values (15)
 
select 'PRIMEIRO UPDATE'
update #tabela2
set #tabela2.Qtde_Total = (isnull(t1.sum_qtd1,0) + isnull(t3.sum_qtde2,0))
from #tabela2 t2 inner join
(
select Produto, sum(Qtde) as sum_qtd1
from #tabela1
group by Produto
) as t1
on t1.produto = t2.produto
inner join (
select Produto, sum(Qtde_Total) as sum_qtde2
from #tabela2
group by Produto
) as t3
on t1.produto = t3.produto
 
select 'primeiro UPDATE', * from #tabela2
 
select 'ATUALIZACAO'
 
update #tabela2
set #tabela2.Qtde_Total = (isnull(t1.sum_qtd1,0) + isnull(t3.sum_qtde2,0))
from #tabela2 t2 inner join
(
select Produto, sum(Qtde) as sum_qtd1
from #tabela1
group by Produto
) as t1
on t1.produto = t2.produto
inner join (
select Produto, sum(Qtde_Total) as sum_qtde2
from #tabela2
group by Produto
) as t3
on t1.produto = t3.produto
 
 
select 'ATUALIZACAO', * from #tabela2
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.