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
Pergunta
rocha_jl
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 para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados