SQL RETORNAR ZERO ONDE COUNT ENCONTRAR NULL
28/01/2020
0
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
Post mais votado
29/01/2020
Verificou se existe alguma CARGA com valor Null, caso sim trate também o campo ou descarte no Where com IS NOT NULL.
Eldo
Mais Posts
29/01/2020
Rodolfo Gomes
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!
29/01/2020
Rafael Gomes
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
29/01/2020
Rafael Gomes
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
29/01/2020
Rafael Gomes
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!
30/01/2020
Rodolfo Gomes
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
03/02/2020
Anderson Gonçalves
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.
Clique aqui para fazer login e interagir na Comunidade :)