Inner Join com soma (sum)
Prezados, boa tarde.
tenho os seguintes elementos:
cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta
como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:
select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;
podem me ajudar, gratidão.
tenho os seguintes elementos:
cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta
como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:
select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;
podem me ajudar, gratidão.
Leonardo
Curtidas 0
Respostas
Emerson Nascimento
08/07/2019
como funciona?
a tabela estoque são os movimentos de entrada e a tabela movimento são os movimentos de saída?
porque um campo produto e outro cod_produto?
a tabela estoque são os movimentos de entrada e a tabela movimento são os movimentos de saída?
porque um campo produto e outro cod_produto?
GOSTEI 0
Ricardo Pestana
08/07/2019
Leonardo,
Assumindo que as colunas e o join estão corretos, vc teria apenas que colocar todas as colunas que deseja agrupar antes das funções de soma... e elas tem que estar na mesma ordem que estiverem no group by. Após essas colunas todas as medidas ou métricas devem estar em uma função de agregação/ou de grupo tipo sum, count, avg.... editei mais ou menos seu select para dar um exemplo...
Outra coisa não vai funcionar estoque.qt - sum(movimento.qt)... para isso vc vai ter que fazer um select externo a essa consulta e aí sim fazer esse calculo. Eu tentaria usando ainda seu select como exemplo,:
select t.cod_produto, t.produto, t.mes, t.entrada, t.saida, (t.entrada - t.saida) as saldo, t.alerta from
(
select estoque.cod_produto, estoque.produto, movimento.mes as mes
sum(estoque.qt) as entrada, sum(movimento.qt) as saida, max(estoque.qt) as qtestoque, sum(movimento.qt) as qtmov, estoque.alerta,from estoque
join movimento on estoque.cod_produto = movimento.cod_produto
group by estoque.cod_produto, estoque.produto, movimento.mes
) as t;
Assumindo que as colunas e o join estão corretos, vc teria apenas que colocar todas as colunas que deseja agrupar antes das funções de soma... e elas tem que estar na mesma ordem que estiverem no group by. Após essas colunas todas as medidas ou métricas devem estar em uma função de agregação/ou de grupo tipo sum, count, avg.... editei mais ou menos seu select para dar um exemplo...
Outra coisa não vai funcionar estoque.qt - sum(movimento.qt)... para isso vc vai ter que fazer um select externo a essa consulta e aí sim fazer esse calculo. Eu tentaria usando ainda seu select como exemplo,:
select t.cod_produto, t.produto, t.mes, t.entrada, t.saida, (t.entrada - t.saida) as saldo, t.alerta from
(
select estoque.cod_produto, estoque.produto, movimento.mes as mes
sum(estoque.qt) as entrada, sum(movimento.qt) as saida, max(estoque.qt) as qtestoque, sum(movimento.qt) as qtmov, estoque.alerta,from estoque
join movimento on estoque.cod_produto = movimento.cod_produto
group by estoque.cod_produto, estoque.produto, movimento.mes
) as t;
GOSTEI 0
Sérgio Saibel
08/07/2019
Prezados, boa tarde.
tenho os seguintes elementos:
cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta
como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:
select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;
podem me ajudar, gratidão.
tenho os seguintes elementos:
cod_produto
produto
entrada
coluna as saida
coluna as saldo
alerta
como faria o join relacionando duas tabelas: estoque e movimento, apresentando estas colunas de acordo com cada mês do ano??
tentei fazer desta forma mas não consegui ou faltou algum detalhe que não notei, vejam abaixo:
select estoque.cod_produto, estoque.produto, estoque.qt as entrada, sum(movimento.qt) as saida,estoque.qt - sum(movimento.qt) as saldo,estoque.alerta,movimento.mes as mes from estoque join movimento
on estoque.cod_produto = movimento.cod_produto group by cod_produto;
podem me ajudar, gratidão.
Bom dia....
Estava com um problema semelhante que me foi resolvido, dá uma olhada no post para ver se te ajuda: https://www.devmedia.com.br/forum/condicao-where-sem-agrupamento-de-campo-postgres/603536
Abraço
GOSTEI 0