[firebase-br] soma na view

Wilson Rosa wsrosa em gmail.com
Qua Jan 29 11:32:32 -03 2014


Complementando o exemplo do Walter,

para ter o resultado que você espera o IIF deve ser :

IIF(  *sum(coalesce(ip.qtde_vendido,0))* > 0,
      sum(coalesce(ip.qtde_separado,0)) / sum(coalesce(ip.qtde_vendido,0))
* 100,
      0) AS Percentual


ou outra solução:

sum(coalesce(ip.qtde_separado,0)) / *coalesce( nullif( *sum(
coalesce(ip.qtde_vendido,0) )*, 0 ), 1 )* * 100

se a soma da qtde.vendido se for = 0 você transforma-a em nula e aplica um
coalesce transformando-a em 1, com isso evita-se a divisão por zero (que é
o problema), independente da soma da qtde.separado ser zero ou não.

O problema não é dividir 0 por 0, mas sim dividir qualquer coisa por zero.




*Wilson Rosawsrosa em gmail.com <wsrosa em gmail.com>*



Em 28 de janeiro de 2014 22:59, W O <sistemas2000profesional em gmail.com>escreveu:

> En tu último COALESCE() no pongas 0, pon 1.
>
> No se puede dividir por 0 pero sí se puede dividir por 1.
>
> Como alternativa puedes usar la función IIF()
>
> IIF(ip.qtde_vendido > 0, sum(coalesce(ip.qtde_separado,0)) /
> sum(coalesce(ip.qtde_vendido,0)) * 100, 0) AS Percentual
>
> Saludos.
>
> Walter.
>
>
>
> 2014-01-28 Jose Luiz de Medeiros <joseluiz em digitoneletronica.com.br>
>
> > boa noite.
> >
> > preciso nessa view retornar o percentual de uma determinada consulta:
> >
> > CREATE VIEW VW_PROD_PEDIDO(
> >     PEDV,
> >     DATA_OPERACAO,
> >     NOME_CLI,
> >     CIDADE,
> >     UF_CLI,
> >     COD_PROD,
> >     DESC_PROD,
> >     idcarga,
> >     VENDIDO,
> >     SEPARADO,
> >     PERCENTUAL)
> > AS
> > select
> >
> p.pedv,p.data_operacao,p.nome_cli,p.cidade,p.uf_cli,ip.cod_prod,ip.desc_prod,ic.id_carga,
> >       sum(coalesce(ip.qtde_vendido,0)) as vendido,
> >        sum(coalesce(ip.qtde_separado,0)) as separado,
> >        sum(coalesce(ip.qtde_separado,0)) /
> > sum(coalesce(ip.qtde_vendido,0)) * 100 AS Percentual  -------> erro aqui
> >
> > from pedido p
> > inner join item_pedido ip on(ip.pedv = p.pedv)
> > inner join item_carga ic on(ic.id_pedido = p.pedv)
> >
> > group by
> >
> >
> p.pedv,p.data_operacao,p.nome_cli,p.cidade,p.uf_cli,ip.cod_prod,ip.desc_prod,ic.id_carga
> >
> > no ultimo sum tenho que pegar o % de cada item separado, só que quando
> > estiver qtde_vendido = 0 e qtde_separado = 0 recebo o erro :
> > arithmetic overflow or divison by zero has occurred com certeza sei que
> > não posso dividir 0 por 0.
> >
> > mas como posso contornar esse problema?
> >
> > grato:
> >
> >
> >
> >
> >
> > Jose Luiz de Medeiros
> >
> > -----------------------------------
> >
> >
> > Programmer &   TI Professional
> >
> > :: delphi - php - firebird - mysql ::
> >
> > (31)9628-4764
> >
> >
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista