SQL RETORNAR ZERO ONDE COUNT ENCONTRAR NULL

28/01/2020

0

Boa tarde, necessito de ajuda com a seguinte situação
possuo uma tabela que tem os pedidos/notas dos clientes eu preciso contar quantas notas("V" - venda) cada carga possui mesmo que a carga não possua nenhuma nota eu preciso que retorne 0

a tabela tem a seguinte sintaxe:
idped | carga | codcli | tipopedido
*obs na coluna "tipopedido" eu posso ter duas opções "V" - venda e "P" - pedido

Estou realizando a seguinte consulta:

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
WHERE TIPOPEDIDO = 'V'
GROUP BY CARGA

O problema que estou passando é que as cargas que não tem os tipos de pedido com status ''V' não estão retornando nada, preciso que retorne 0.
Acredito que o motivo é a utilização da função group by na coluna "carga" porém não sei de uma outra forma de fazer. Quando tiro a função group by, removo a coluna "carga" do select e aponto uma carga especifica, a consulta retorna o valor esperado (0)
Rafael Gomes

Rafael Gomes

Responder

Post mais votado

29/01/2020

Olá Rafael,

Verificou se existe alguma CARGA com valor Null, caso sim trate também o campo ou descarte no Where com IS NOT NULL.

Eldo

Eldo
Responder

Mais Posts

29/01/2020

Rodolfo Gomes

Boa tarde, necessito de ajuda com a seguinte situação
possuo uma tabela que tem os pedidos/notas dos clientes eu preciso contar quantas notas("V" - venda) cada carga possui mesmo que a carga não possua nenhuma nota eu preciso que retorne 0

a tabela tem a seguinte sintaxe:
idped | carga | codcli | tipopedido
*obs na coluna "tipopedido" eu posso ter duas opções "V" - venda e "P" - pedido

Estou realizando a seguinte consulta:

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
WHERE TIPOPEDIDO = 'V'
GROUP BY CARGA

O problema que estou passando é que as cargas que não tem os tipos de pedido com status ''V' não estão retornando nada, preciso que retorne 0.
Acredito que o motivo é a utilização da função group by na coluna "carga" porém não sei de uma outra forma de fazer. Quando tiro a função group by, removo a coluna "carga" do select e aponto uma carga especifica, a consulta retorna o valor esperado (0)


Fala Rafael , tranquilo?

O primeiro detalhe que precisa se atentar na sua query é que deverá usar a instrução HAVING ao invés de WHERE. Pois quando vc utiliza funções de agregação é necessário fazer uso do HAVING para que assim seja filtro da seleção ocorra.

Então neste caso vc deve primeiramente fazer essa mudança

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
GROUP BY CARGA
HAVING TIPOPEDIDO = 'V'


Veja se com esta modificação você terá um resultado diferente do que já estava tendo.

Compartilhe a solução desta implementação

Abração!
Responder

29/01/2020

Rafael Gomes

Boa tarde, necessito de ajuda com a seguinte situação
possuo uma tabela que tem os pedidos/notas dos clientes eu preciso contar quantas notas("V" - venda) cada carga possui mesmo que a carga não possua nenhuma nota eu preciso que retorne 0

a tabela tem a seguinte sintaxe:
idped | carga | codcli | tipopedido
*obs na coluna "tipopedido" eu posso ter duas opções "V" - venda e "P" - pedido

Estou realizando a seguinte consulta:

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
WHERE TIPOPEDIDO = 'V'
GROUP BY CARGA

O problema que estou passando é que as cargas que não tem os tipos de pedido com status ''V' não estão retornando nada, preciso que retorne 0.
Acredito que o motivo é a utilização da função group by na coluna "carga" porém não sei de uma outra forma de fazer. Quando tiro a função group by, removo a coluna "carga" do select e aponto uma carga especifica, a consulta retorna o valor esperado (0)


Fala Rafael , tranquilo?

O primeiro detalhe que precisa se atentar na sua query é que deverá usar a instrução HAVING ao invés de WHERE. Pois quando vc utiliza funções de agregação é necessário fazer uso do HAVING para que assim seja filtro da seleção ocorra.

Então neste caso vc deve primeiramente fazer essa mudança

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
GROUP BY CARGA
HAVING TIPOPEDIDO = 'V'


Veja se com esta modificação você terá um resultado diferente do que já estava tendo.

Compartilhe a solução desta implementação

Abração!


Boa tarde Rodolfo, tudo bem?

da forma que vc indicou, quando tento realizar a consulta informa que a coluna "tipopedido" não pertence a expressão group by
Responder

29/01/2020

Rafael Gomes

Olá Rafael,

Verificou se existe alguma CARGA com valor Null, caso sim trate também o campo ou descarte no Where com IS NOT NULL.


Boa tarde Eldo,
Obrigado pela ajuda, deu certo
Responder

29/01/2020

Rafael Gomes

Boa tarde, necessito de ajuda com a seguinte situação
possuo uma tabela que tem os pedidos/notas dos clientes eu preciso contar quantas notas("V" - venda) cada carga possui mesmo que a carga não possua nenhuma nota eu preciso que retorne 0

a tabela tem a seguinte sintaxe:
idped | carga | codcli | tipopedido
*obs na coluna "tipopedido" eu posso ter duas opções "V" - venda e "P" - pedido

Estou realizando a seguinte consulta:

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
WHERE TIPOPEDIDO = 'V'
GROUP BY CARGA

O problema que estou passando é que as cargas que não tem os tipos de pedido com status ''V' não estão retornando nada, preciso que retorne 0.
Acredito que o motivo é a utilização da função group by na coluna "carga" porém não sei de uma outra forma de fazer. Quando tiro a função group by, removo a coluna "carga" do select e aponto uma carga especifica, a consulta retorna o valor esperado (0)


Fala Rafael , tranquilo?

O primeiro detalhe que precisa se atentar na sua query é que deverá usar a instrução HAVING ao invés de WHERE. Pois quando vc utiliza funções de agregação é necessário fazer uso do HAVING para que assim seja filtro da seleção ocorra.

Então neste caso vc deve primeiramente fazer essa mudança

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
GROUP BY CARGA
HAVING TIPOPEDIDO = 'V'


Veja se com esta modificação você terá um resultado diferente do que já estava tendo.

Compartilhe a solução desta implementação

Abração!


Boa tarde Rodolfo, tudo bem?

da forma que vc indicou, quando tento realizar a consulta informa que a coluna "tipopedido" não pertence a expressão group by


Boa tarde Rodolfo, obrigado pela ajuda!
Responder

30/01/2020

Rodolfo Gomes

Boa tarde, necessito de ajuda com a seguinte situação
possuo uma tabela que tem os pedidos/notas dos clientes eu preciso contar quantas notas("V" - venda) cada carga possui mesmo que a carga não possua nenhuma nota eu preciso que retorne 0

a tabela tem a seguinte sintaxe:
idped | carga | codcli | tipopedido
*obs na coluna "tipopedido" eu posso ter duas opções "V" - venda e "P" - pedido

Estou realizando a seguinte consulta:

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
WHERE TIPOPEDIDO = 'V'
GROUP BY CARGA

O problema que estou passando é que as cargas que não tem os tipos de pedido com status ''V' não estão retornando nada, preciso que retorne 0.
Acredito que o motivo é a utilização da função group by na coluna "carga" porém não sei de uma outra forma de fazer. Quando tiro a função group by, removo a coluna "carga" do select e aponto uma carga especifica, a consulta retorna o valor esperado (0)


Fala Rafael , tranquilo?

O primeiro detalhe que precisa se atentar na sua query é que deverá usar a instrução HAVING ao invés de WHERE. Pois quando vc utiliza funções de agregação é necessário fazer uso do HAVING para que assim seja filtro da seleção ocorra.

Então neste caso vc deve primeiramente fazer essa mudança

SELECT CARGA, NVL(COUNT(IDPED), 0)
FROM TABELAPEDIDO
GROUP BY CARGA
HAVING TIPOPEDIDO = 'V'


Veja se com esta modificação você terá um resultado diferente do que já estava tendo.

Compartilhe a solução desta implementação

Abração!


Boa tarde Rodolfo, tudo bem?

da forma que vc indicou, quando tento realizar a consulta informa que a coluna "tipopedido" não pertence a expressão group by


Boa tarde Rodolfo, obrigado pela ajuda!


Shoooow Rafael, ótimo que conseguiu!

TMJ
Responder

03/02/2020

Anderson Gonçalves

Fala boy,

Se quiser trazer um resultado que está NULO com o valor zero você pode usar o COALESCE

select
Coalesce(Campo,0)as ApelidoCampo
from TabelaX

Se o campo for nulo ele trás o valor zero.
Responder

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

Aceitar