Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Bezerra

UPDATE com soma de tabelas diferentes

Recommended Posts

Boa noite pessoal, preciso de um help.

 

 

Tenho uma tabela que preciso atualizar com o resultado da soma de valores de outra tabela.

 

Em uma tabela tenho PAGAMENTOS e na outra CARTÕES. Os pagamentos são agrupamentos de vários cartões porém existem pagamentos que faltam um ou mais cartões , então preciso recalcular a soma dos cartões que existem para atualizar a tabela pagamentos.

 

Entre as tabelas existe a pk id_pagamento.

 

Lembrando que preciso eliminar os pagamentos que não possuem cartão associado.

 

Segue o select que estou executando:

 

SELECT PAGAMENTOS_CARTAO.ID_PAGAMENTO,
SUM (PAGAMENTOS_CARTAO.VALOR_ORIGINAL) AS VALOR_ORIGINAL ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA) AS VALOR_TAXA ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_IOF) AS VALOR_TAXA_IOF ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_TRANSACAO) AS VALOR_TAXA_TRANSACAO,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_SOLICITACAO) AS VALOR_TAXA_SOLICITACAO
FROM PAGAMENTOS_CARTAO , PAGAMENTOS
WHERE PAGAMENTOS_CARTAO.ID_PAGAMENTO = PAGAMENTOS.ID_PAGAMENTO
GROUP BY PAGAMENTOS_CARTAO.ID_PAGAMENTO
Vlw!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Boa noite pessoal, preciso de um help.

 

 

Tenho uma tabela que preciso atualizar com o resultado da soma de valores de outra tabela.

 

Em uma tabela tenho PAGAMENTOS e na outra CARTÕES. Os pagamentos são agrupamentos de vários cartões porém existem pagamentos que faltam um ou mais cartões , então preciso recalcular a soma dos cartões que existem para atualizar a tabela pagamentos.

 

Entre as tabelas existe a pk id_pagamento.

 

Lembrando que preciso eliminar os pagamentos que não possuem cartão associado.

 

Segue o select que estou executando:

 

SELECT PAGAMENTOS_CARTAO.ID_PAGAMENTO,
SUM (PAGAMENTOS_CARTAO.VALOR_ORIGINAL) AS VALOR_ORIGINAL ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA) AS VALOR_TAXA ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_IOF) AS VALOR_TAXA_IOF ,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_TRANSACAO) AS VALOR_TAXA_TRANSACAO,
SUM (PAGAMENTOS_CARTAO.VALOR_TAXA_SOLICITACAO) AS VALOR_TAXA_SOLICITACAO
FROM PAGAMENTOS_CARTAO , PAGAMENTOS
WHERE PAGAMENTOS_CARTAO.ID_PAGAMENTO = PAGAMENTOS.ID_PAGAMENTO
GROUP BY PAGAMENTOS_CARTAO.ID_PAGAMENTO
Vlw!!!

 

Bom dia.

Cara, assumindo "pagamento" como tabela a ser atualizada e os alias do "as" como campos da tabela "pagamento" a serem atualizados.

1 - não é possível utilizar funções de agrupamento em updates... então, vc vai ter que utilizar uma subquery pra trazer a soma dos registros que devem ser atualizados, seguem dois exemplos.

-- exemplo 1
--------------------------------------------------
with car as
(
select id_pagamento
,sum (valor_original) as valor_original
,sum (valor_taxa) as valor_taxa
,sum (valor_taxa_iof) as valor_taxa_iof
,sum (valor_taxa_transacao) as valor_taxa_transacao
,sum (valor_taxa_solicitacao) as valor_taxa_solicitacao
from pagamentos_cartao
group by id_pagamento
)
update pag
set pag.valor_original = car.valor_original
,pag.valor_taxa = car.valor_taxa
,pag.valor_taxa_iof = car.valor_taxa_iof
,pag.valor_taxa_transacao = car.valor_taxa_transacao
,pag.valor_taxa_solicitacao = car.valor_taxa_solicitacao
from pagamentos pag
join car
on car.id_pagamento = pag.id_pagamento
-- exemplo 2
--------------------------------------------------
update pag
set pag.valor_original = car.valor_original
,pag.valor_taxa = car.valor_taxa
,pag.valor_taxa_iof = car.valor_taxa_iof
,pag.valor_taxa_transacao = car.valor_taxa_transacao
,pag.valor_taxa_solicitacao = car.valor_taxa_solicitacao
from pagamentos pag
join (select id_pagamento
,sum (valor_original) as valor_original
,sum (valor_taxa) as valor_taxa
,sum (valor_taxa_iof) as valor_taxa_iof
,sum (valor_taxa_transacao) as valor_taxa_transacao
,sum (valor_taxa_solicitacao) as valor_taxa_solicitacao
from pagamentos_cartao
group by id_pagamento) car
on car.id_pagamento = pag.id_pagamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr

 

As estruturas são as seguintes:

 

Pagamentos

 

PK- id_pagamentos

total_original

total_taxa

total_iof

 

 

Pagamentos_cartoes

 

PK - id_pagamento_cartao

FK - id_pagamento

id_cartao_terceiro

valor_original

valor_taxa

valor_taxa_iof

 

Lembrando que nos Pagamentos e o agrupamento dos cartões que estão na Pagamentos_cartões. Preciso somar esses cartões para dar o valor do Pagamento, e se um pagamento não tiver cartões eu tenho que excluir.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Conforme resposta anterior.


-- exemplo 1

--------------------------------------------------

with car as

(

select id_pagamento

,sum (valor_original) as valor_original

,sum (valor_taxa) as valor_taxa

,sum (valor_taxa_iof) as valor_taxa_iof

from pagamentos_cartao

group by id_pagamento

)

update pag

set pag.total_original = car.valor_original

,pag.total_taxa = car.valor_taxa

,pag.total_iof = car.valor_taxa_iof

from pagamentos pag

join car

on car.id_pagamento = pag.id_pagamento



-- exemplo 2

--------------------------------------------------

update pag

set pag.total_original = car.valor_original

,pag.total_taxa = car.valor_taxa

,pag.total_iof = car.valor_taxa_iof

from pagamentos pag

join (select id_pagamento

,sum (valor_original) as valor_original

,sum (valor_taxa) as valor_taxa

,sum (valor_taxa_iof) as valor_taxa_iof

from pagamentos_cartao

group by id_pagamento) car


on car.id_pagamento = pag.id_pagamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Bom dia.

Cara, assumindo "pagamento" como tabela a ser atualizada e os alias do "as" como campos da tabela "pagamento" a serem atualizados.

1 - não é possível utilizar funções de agrupamento em updates... então, você vai ter que utilizar uma subquery pra trazer a soma dos registros que devem ser atualizados, seguem dois exemplos.

-- exemplo 1
--------------------------------------------------
with car as
(
select id_pagamento
,sum (valor_original) as valor_original
,sum (valor_taxa) as valor_taxa
,sum (valor_taxa_iof) as valor_taxa_iof
,sum (valor_taxa_transacao) as valor_taxa_transacao
,sum (valor_taxa_solicitacao) as valor_taxa_solicitacao
from pagamentos_cartao
group by id_pagamento
)
update pag
set pag.valor_original = car.valor_original
,pag.valor_taxa = car.valor_taxa
,pag.valor_taxa_iof = car.valor_taxa_iof
,pag.valor_taxa_transacao = car.valor_taxa_transacao
,pag.valor_taxa_solicitacao = car.valor_taxa_solicitacao
from pagamentos pag
join car
on car.id_pagamento = pag.id_pagamento
-- exemplo 2
--------------------------------------------------
update pag
set pag.valor_original = car.valor_original
,pag.valor_taxa = car.valor_taxa
,pag.valor_taxa_iof = car.valor_taxa_iof
,pag.valor_taxa_transacao = car.valor_taxa_transacao
,pag.valor_taxa_solicitacao = car.valor_taxa_solicitacao
from pagamentos pag
join (select id_pagamento
,sum (valor_original) as valor_original
,sum (valor_taxa) as valor_taxa
,sum (valor_taxa_iof) as valor_taxa_iof
,sum (valor_taxa_transacao) as valor_taxa_transacao
,sum (valor_taxa_solicitacao) as valor_taxa_solicitacao
from pagamentos_cartao
group by id_pagamento) car
on car.id_pagamento = pag.id_pagamento

 

Ao Diemerson vlw mesmo.

 

Deu certinho conferi aqui. Agora to removendo os que não tem cartões mas aí já é mais facil.

 

Abraços!!!

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.