Ir para conteúdo

Arquivado

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

manolegal

Consulta em Postgre

Recommended Posts

Olá amigos do Fórum.

Tenho a seguinte consulta SQL

SELECT DISTINCT veiculos_despesas_produtos_produtos.produto,
SUM (agric_troca_safra_produtos.qdade_produto) as soma_produto_safra,
0 as soma_produto_contrato
FROM veiculos_despesas_produtos_produtos,
agric_troca_safra
LEFT OUTER JOIN agric_troca_safra_produtos ON (agric_troca_safra.id_safra = agric_troca_safra_produtos.safra_id)
WHERE agric_troca_safra_produtos.produto_id = veiculos_despesas_produtos_produtos.id_produto
AND agric_troca_safra.id_safra = 3
GROUP BY produto
HAVING SUM(agric_troca_safra_produtos.qdade_produto)IS NOT NULL
UNION 
SELECT DISTINCT veiculos_despesas_produtos_produtos.produto,
0 as soma_produto_safra,
SUM (agric_troca_contratos_detalhes.qdade_produto) as soma_produto_contrato
FROM veiculos_despesas_produtos_produtos,
agric_troca_safra
LEFT OUTER JOIN agric_troca_contratos ON (agric_troca_safra.id_safra = agric_troca_contratos.safra_id)
LEFT OUTER JOIN agric_troca_contratos_detalhes ON (agric_troca_contratos.id_contrato = agric_troca_contratos_detalhes.contrato_id)
WHERE agric_troca_contratos_detalhes.produto_id = veiculos_despesas_produtos_produtos.id_produto
AND agric_troca_safra.id_safra = 3
GROUP BY produto
HAVING SUM(agric_troca_contratos_detalhes.qdade_produto) IS NOT NULL
ORDER BY produto;

Que me mostra o seguinte resultado:

produto soma_produto_safra soma_produto_contrato

PRODUTO_1 0 6

PRODUTO_1 20 0

PRODUTO_2 0 5

PRODUTO_2 10 0

 

Os valores estão certos. O q eu precisava é q “fosse ignorado os zeros”. Q fossem mostradas 02 linhas somente com valores diferentes de zero.

O resultado ficaria assim:

produto soma_produto_safra soma_produto_contrato

PRODUTO_1 20 6

PRODUTO_2 10 5

 

Se puderem me ajudar, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use esta SQL como uma tabela virtual e faça uma agregação

 

Select produto,sum(safra) safra,sum(contrato) contrato

From

(Sql)

Group by produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta

Tentei, mas retorna valores errados.

SELECT veiculos_despesas_produtos_produtos.produto,
SUM (agric_troca_safra_produtos.qdade_produto) as soma_produto_safra,
SUM (agric_troca_contratos_detalhes.qdade_produto) as soma_produto_contrato
FROM agric_troca_safra, agric_troca_safra_produtos,
agric_troca_contratos, agric_troca_contratos_detalhes,
veiculos_despesas_produtos_produtos

WHERE agric_troca_safra.id_safra = agric_troca_safra_produtos.safra_id
AND agric_troca_safra.id_safra = agric_troca_contratos.safra_id
AND agric_troca_contratos.id_contrato = agric_troca_contratos_detalhes.contrato_id
AND agric_troca_safra_produtos.produto_id = veiculos_despesas_produtos_produtos.id_produto
AND agric_troca_contratos_detalhes.produto_id = veiculos_despesas_produtos_produtos.id_produto
AND agric_troca_safra_produtos.produto_id = agric_troca_contratos_detalhes.produto_id
GROUP BY produto
ORDER BY produto;

Compartilhar este post


Link para o post
Compartilhar em outros sites


select produto,sum(soma_produto_safra) soma_produto_safra,sum(soma_produto_contrato) soma_produto_contrato

from

(

SELECT DISTINCT veiculos_despesas_produtos_produtos.produto,

SUM (agric_troca_safra_produtos.qdade_produto) as soma_produto_safra,

0 as soma_produto_contrato

FROM veiculos_despesas_produtos_produtos,

agric_troca_safra

LEFT OUTER JOIN agric_troca_safra_produtos ON (agric_troca_safra.id_safra = agric_troca_safra_produtos.safra_id)

WHERE agric_troca_safra_produtos.produto_id = veiculos_despesas_produtos_produtos.id_produto

AND agric_troca_safra.id_safra = 3

GROUP BY produto

HAVING SUM(agric_troca_safra_produtos.qdade_produto)IS NOT NULL

UNION

SELECT DISTINCT veiculos_despesas_produtos_produtos.produto,

0 as soma_produto_safra,

SUM (agric_troca_contratos_detalhes.qdade_produto) as soma_produto_contrato

FROM veiculos_despesas_produtos_produtos,

agric_troca_safra

LEFT OUTER JOIN agric_troca_contratos ON (agric_troca_safra.id_safra = agric_troca_contratos.safra_id)

LEFT OUTER JOIN agric_troca_contratos_detalhes ON (agric_troca_contratos.id_contrato = agric_troca_contratos_detalhes.contrato_id)

WHERE agric_troca_contratos_detalhes.produto_id = veiculos_despesas_produtos_produtos.id_produto

AND agric_troca_safra.id_safra = 3

GROUP BY produto

HAVING SUM(agric_troca_contratos_detalhes.qdade_produto) IS NOT NULL

) group by produto

ORDER BY produto;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta. Testei o código e deu certo.

Muito obrigado pela ajuda.

Tópico resolvido.

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.