Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Retornar zero em count is null


rocha_jl
 Share

Question

Necessito de uma ajuda.

Tenho uma tabela TB_BAIRRO (id, bairro) e uma view BAIRRO_ENTREGA (bairro, quant, data)

Estou utilizando o SQL abaixo que me retorna todos os bairros da tabela BAIRROS e mais 03 colunas TOTAL_MES01 com a quantidade de entregas no bairro do primeiro período, TOTAL_MES02 com a quantidade de entregas no bairro do segundo período e DIFERENCA, período 01 - período 02.

O problema é que se não tenho entregas em determinado bairro em algum dos períodos o comando retorna NULL e necessito que retorne 0 (zero) para fazer a conta da DIFERENCA.

Já pesquisei bastante, tentei com IF, CASE, IS NULL e nada. Segue comando:

Select B.BAIRRO,

B1.TOTAL_MES01,

B2.TOTAL_MES02,

(B1.TOTAL_MES01 - B2.TOTAL_MES02) AS DIFERENCA

FROM TB_BAIRRO B

LEFT JOIN (SELECT X.BAIRRO, coalesce(COUNT(X.QUANT),0) AS TOTAL_MES01

FROM BAIRRO_ENTREGA X

LEFT JOIN TB_BAIRRO X1 ON (X1.BAIRRO = X.BAIRRO)

WHERE X.Data between '$data1' and '$data2'

GROUP BY 1) B1 ON (B1.BAIRRO = B.BAIRRO)

LEFT JOIN(SELECT Y.BAIRRO, coalesce(COUNT(Y.QUANT),0) AS TOTAL_MES02

FROM BAIRRO_ENTREGA Y

LEFT JOIN TB_BAIRRO Y1 ON (Y1.BAIRRO = Y.BAIRRO)

WHERE Y.Data between '$data3' and '$data4'

GROUP BY 1) B2 ON (B2.BAIRRO = B.BAIRRO)

ORDER BY B.BAIRRO

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0
Select 
    B.BAIRRO,
    B1.TOTAL_MES01,
    B2.TOTAL_MES02,
    coalesce(B1.TOTAL_MES01, 0) - coalesce(B2.TOTAL_MES02, 0) AS DIFERENCA
FROM 
    TB_BAIRRO B
    LEFT JOIN (
        SELECT BAIRRO, sum(QUANT) AS TOTAL_MES01
        FROM BAIRRO_ENTREGA
        WHERE Data between '$data1' and '$data2'
        GROUP BY 1
        ) B1 ON (B1.BAIRRO = B.BAIRRO)
    LEFT JOIN (
        SELECT BAIRRO, sum(QUANT) AS TOTAL_MES02
        FROM BAIRRO_ENTREGA
        WHERE Data between '$data3' and '$data4'
        GROUP BY 1
        ) B2 ON (B2.BAIRRO = B.BAIRRO)
ORDER BY B.BAIRRO

Edited by Kakao
Link to comment
Share on other sites

  • 0

A coluna DIFERENCA veio com o 0, mas as B1.TOTAL_MES01 e B2.TOTAL_MES02 continuam vazias quando são nulas.

Tentei:

Select

B.BAIRRO,

coalesce(B1.TOTAL_MES01, 0),

coalesce(B2.TOTAL_MES02, 0),

coalesce(B1.TOTAL_MES01, 0) - coalesce(B2.TOTAL_MES02, 0) AS DIFERENCA ...

mas não funcionou.

Alguma alternativa?

Deu certo aqui.

Responderam em outro fórum.

O correto é:

Select

B.BAIRRO,

COALESCE(B1.TOTAL_MES01,0) TOTAL_MES01,

COALESCE(B2.TOTAL_MES02,0) TOTAL_MES02,

coalesce(B1.TOTAL_MES01, 0) - coalesce(B2.TOTAL_MES02, 0) AS DIFERENCA ...

Grato pela atenção.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...