[firebase-br] soma na view
Jose Luiz De Medeiros
joseluiz em digitoneletronica.com.br
Qua Jan 29 19:30:36 -03 2014
Boa noite.
Valeu wilson, funcionou blz.
Muito obrigado a todos pela força...
Jose Luiz de Medeiros
--------------------------------------
T.I - Professional
(31) 9628-4764
Enviado por Samsung Mobile
-------- Mensagem original --------
De : Wilson Rosa <wsrosa em gmail.com>
Data:29/01/2014 11:32 (GMT-03:00)
Para: FireBase <lista em firebase.com.br>
Assunto: Re: [firebase-br] soma na view
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
>
______________________________________________
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