Ir para conteúdo

POWERED BY:

Arquivado

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

bruno persona

Subtração de colunas de mesma tabela

Recommended Posts

Boa tarde, tenho a seguinte query abaixo.

 

select
id_movimentacao,
id_estoque,
sum(qtd) as soma
from
estoque_movimentacao
group by
id_movimentacao,
id_estoque
order by id_estoque,id_movimentacao
e o seguinte resultado
id_movimentacao id_estoque soma
1 18 6
2 18 2
1 19 1
1 20 1
1 21 8

 

 

quero subtrair as colunas que tenham id_estoque iguais, mas com id_movimentacao diferente.

 

exemplo, subtrair os dois primeiros registros desse resultado, que tem o mesmo id de estoque, mas id de movimentacao diferente.

 

1 - entrada

2 - saida.

 

Se alguem puder ajudar, eu ficaria mto grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

use tabela virtuais

SELECT ENTRADA.ID_ESTOQUE , (ENTRADA.SOMA - SAIDA.SOMA) SALDO
FROM
(
select 
id_movimentacao, 
id_estoque,
sum(qtd) as soma
from 
estoque_movimentacao
where movimentacao = 1
group by 
id_movimentacao, 
id_estoque
order by id_estoque,id_movimentacao

) ENTRADA,

(select 
id_movimentacao, 
id_estoque,
sum(qtd) as soma
from 
estoque_movimentacao
where movimentacao <> 1
group by 
id_movimentacao, 
id_estoque
order by id_estoque,id_movimentacao
) SAIDA

WHERE ENTRADA,ID_ESTOQUE = SAIDA.ID_ESTOQUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, nesse caso ele só retornou o id 18 e o calculo desse id, eu também preciso que retorne os outros que nao tinham calculo para efetuar, já tentei varias maneiras aqui, mas não deu certo ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia fazer um outer join na sql acima ....

 

 

uma outra solução é usar CASE

select id_movimentacao,id_estoque,entrada,saida,(entrada-saida) saldo
from
(
select
id_movimentacao,
id_estoque,
sum(case when movimentacao = 1 then soma else 0 end) entrada,
sum(case when movimentacao <> 1 then soma else 0 end) saida
from
estoque_movimentacao
group by
id_movimentacao,
id_estoque
order by id_estoque,id_movimentacao
) virtual 

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mais importante , vc entendeu a solução ?

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.