Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia galera.
Estou precisando fazer uma soma de dois valores em uma tabela, sendo um valor de faturado e outro de devolvido.
Para identificar o valor se é faturado ou devolvido uso a coluna ind-devolucao (Se 0 faturado - Se 1 devolvido).
Se o cliente comprou e devolveu alguma coisa no mês, a conta funciona normalmente, porquê existe a coluna 1.
O problema que estou tendo quando o cliente não devolve algum produto, então o campo 1 não existe na consulta e retorna como nulo, assim o mysql não faz a conta.
Segue meu script abaixo
SELECT cod-emitente,nome-matriz,
SUM(case ind-devolucao when 0 then vl-contabil END ) as Faturado,
SUM(case ind-devolucao when 1 then vl-contabil END ) as Devolvido,
SUM(case ind-devolucao when 0 then vl-contabil END ) - SUM(case ind-devolucao when 1 then vl-contabil END ) as Total
FROM faturamento
where ames BETWEEN '201502' and '201502'
and fm-cod-com between '301' and '315'
group by cod-emitente order by Total desc LIMIT 100
Conto com a ajuda de vocês.
>
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce
Tente com COALESCE.
Bom dia Motta, já tentei mas não tive exito.
Não sei se coloquei no lugar certo, mas não mudou em nada no resultado.
Algo assim ...
SUM(case ind-devolucao when 0 then coalasce(vl-contabil,0) ELSE 0 END ) as Faturado,
>
Algo assim ...
SUM(case ind-devolucao when 0 then coalasce(vl-contabil,0) ELSE 0 END ) as Faturado,
Maravilha Motta, quando eu usei não tinha colocado o ELSE.
Muito obrigado.
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce
Tente com COALESCE.