Ir para conteúdo

Arquivado

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

C@rlos.Silv@

Select com sum e inner join

Recommended Posts

Boa tarde amigos,

 

Preciso fazer um select que retorne um valor que seja a soma de três campos. Dois estão em uma tabela chamada icms, sendo eles

vl_icms e vl_dif_aliquota, o outro pertence a tabela chamada baixa_imposto e se chama vl_imposto. vou somar quando o cod_empresa for o mesmo nas duas tabelas, e tem algumas condições de período que não vem ao caso. Se alguem puder ajudar o código segue abaixo:

select sum(VL_ICMS) as vl_icms, sum (VL_DIF_ALIQUOTA) as vl_dif_aliquota   
from icms
inner join baixa_imposto on (baixa_imposto.cod_empresa = icms.cod_empresa)
where
(dt_pagto <= '31.12.2013'
or dt_pagto >= '01.02.2014')
group by baixa_imposto.cod_empresa, icms.cod_empresa
union
select  sum(VL_ICMS) as vl_icms, sum (VL_DIF_ALIQUOTA) as vl_dif_aliquota 
from icms
where periodo = '012014'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como as tabelas se relacionam ?

Qual a relação 1:1 , 1:n n:1 , n:m ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão e que num join há um produto cartesiano entre as tabelas logo quase com certeza esta soma (ou subtração) estaria errada, esta soma se dá linha a linha ou pelo total da empresa , tente mostrar num exemplo numérico

 

A solução pode passar por agrupamento antes de somar

Compartilhar este post


Link para o post
Compartilhar em outros sites

TABELA ICMS

 

COD_EMPRESA - 122

DATA - 012011

VL_ICMS - 2.587,23

VL_DIF_ALIQUOTA - 30,00

 

COD_EMPRESA - 122

DATA -012012

VL_ICMS - 2.896,72

VL_DIF_ALIQUOTA - 30,00

.
.
.
TABELA BAIXA_IMPOSTO
COD_EMPRESA - 122
DATA - 18.02.2013
VL_IMPOSTO - 55,36
.
.
.

Compartilhar este post


Link para o post
Compartilhar em outros sites

--creio ser algo assim

 

--acumulado por empresa

select COD_EMPRESA , sum(VL_ICMS) VL_ICMS
from TABELA ICMS
group by COD_EMPRESA

--ligando ao "baixa"

select virtual.*, BAIXA_IMPOSTO.VL_IMPOSTO
from
(select COD_EMPRESA , sum(VL_ICMS) VL_ICMS
 from TABELA ICMS
 group by COD_EMPRESA) virtual,
 BAIXA_IMPOSTO 
where virtual.COD_EMPRESA = BAIXA_IMPOSTO.COD_EMPRESA

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.