SQL RETORNAR ZERO ONDE COUNT ENCONTRAR NULL

SQL

Oracle PL SQL

28/01/2020

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

Curtidas 0

Melhor post

Eldo

Eldo

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.
GOSTEI 1

Mais Respostas

Rodolfo Gomes

Rodolfo Gomes

28/01/2020

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!
GOSTEI 0
Rafael Gomes

Rafael Gomes

28/01/2020

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
GOSTEI 0
Rafael Gomes

Rafael Gomes

28/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.


Boa tarde Eldo,
Obrigado pela ajuda, deu certo
GOSTEI 0
Rafael Gomes

Rafael Gomes

28/01/2020

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!
GOSTEI 0
Rodolfo Gomes

Rodolfo Gomes

28/01/2020

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
GOSTEI 0
Anderson Gonçalves

Anderson Gonçalves

28/01/2020

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.
GOSTEI 0
POSTAR