Fórum sum em sql #468244
28/01/2014
0
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
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
Jose Medeiros
Curtir tópico
+ 0
Responder
Posts
29/01/2014
Leandro Chiodini
Bom dia,
Voce consegue matar isso ai usado a clausula Case
para caso = 0 nao executar o calculo.
dar uma olhada em
https://www.devmedia.com.br/o-case-do-firebird/1489
Voce consegue matar isso ai usado a clausula Case
para caso = 0 nao executar o calculo.
dar uma olhada em
https://www.devmedia.com.br/o-case-do-firebird/1489
Responder
Gostei + 0
29/01/2014
Thiago Irrazabal
Boa tarde, usando um HAVING não resolve teu caso? abraço.
Att,
Thiago Irrazabal de Oliveira.
Att,
Thiago Irrazabal de Oliveira.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)