Não mostrar se resultado de select for = 0

09/11/2017

0

Boa Tarde,

Tenho o select simples ( mysql) abaixo que faço para contar um estoque de terminado item que está com um determinado prestador de serviços;
Acontece que gostaria que me mostrasse apenas se o resultado da subtração for maior que 0

SELECT cod_produto,

SUM(entrada) as entradas,
SUM(saida) as saidas,
(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' 

GROUP BY cod_produto


já tentei isto e não funcionou !!!

SELECT cod_produto,

SUM(entrada) as entradas,
SUM(saida) as saidas,
(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' AND total > 0

GROUP BY cod_produto


Tentei isto também para simplificar o codigo e também não funcionou.
SELECT cod_produto,

(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' AND total > 0

GROUP BY cod_produto


Agradeço de coração se alguem puder me ajudar.
Fernando

Fernando

Responder

Post mais votado

09/11/2017

Tente assim

SELECT * FROM (

SELECT cod_produto,

(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440'

GROUP BY cod_produto) AS [SRC]
WHERE TOTAL > 0

Fabiano Carvalho

Fabiano Carvalho
Responder

Mais Posts

09/11/2017

Fernando

Boa TArde,

Deu erro de sintaxe
Erro
Static analysis:

12 errors were found during analysis.

Unexpected character. (near "[" at position 162)
Unexpected character. (near "]" at position 166)
An expression was expected. (near "(" at position 14)
Unexpected token. (near "(" at position 14)
This type of clause was previously parsed. (near "SELECT" at position 19)
Unexpected token. (near ")" at position 157)
Unrecognized keyword. (near "AS" at position 159)
Unexpected token. (near "[" at position 162)
Unexpected token. (near "SRC" at position 163)
Unexpected token. (near "]" at position 166)
This type of clause was previously parsed. (near "WHERE" at position 169)
Unrecognized statement type. (near "WHERE" at position 169)
Comando SQL: Documentação

SELECT * FROM ( SELECT cod_produto, (SUM(entrada) - SUM(saida)) as total FROM estoq_prestador WHERE cod_prestador = '440' GROUP BY cod_produto) AS [SRC] WHERE TOTAL > 0

Mensagens do MySQL : Documentação

#1064 - Você tem um erro de sintaxe no seu SQL próximo a '[SRC]
WHERE TOTAL > 0' na linha 11
Responder

09/11/2017

Fabiano Carvalho

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0

Responder

09/11/2017

Fernando

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0



Ele conseguiu executar mas ainda retorna valor 0.

Para se ter ideia, ele retorna o numero 6 que é o correto e retorna o Zero referente a um outro item, este não deveria aparecer nessa consulta.

Obrigado pelo apoio
Responder

09/11/2017

Marcelo Santana

Boa tarde, Fernando. Já fizeram alguns testes hein. Tente dessa forma:


SELECT 
	cod_produto, 
        (SUM(entrada)-SUM(saida)) as total 
FROM `estoq_prestador` 
WHERE (
       SELECT (SUM(entrada)-SUM(saida))) > 0 
GROUP BY cod_produto;



Espero que de certo, tenha uma ótima tarde.
Responder

09/11/2017

Marcelo Santana

falto setar o cod_produto na clausula Where. :)
Responder

09/11/2017

Fernando

falto setar o cod_produto na clausula Where. :)


Boa noite Marcelo,

O codigo funcionou em partes, agora ele não aparece mais os itens que estão zerados mas deixou de fazer a subtração.
Responder

09/11/2017

Fernando

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0



Depois de algumas coca-colas hehe Segue a solução - eu removi o where total pois acredito que ficou redundante

SELECT cod_prestador,
cod_produto,
(SUM(entrada) - SUM(saida)) as TOTAL

FROM estoq_prestador

WHERE cod_prestador = '440'

GROUP BY cod_produto
HAVING SUM(entrada) - SUM(saida) > 0


Desde já, agradeço a ajuda.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar