Boa tarde a todos, primeiro post neste site que me parece ser o melhor e mais ativo sobre oracle!
gente estou com milhares de duvidas mas vou começar com esta que parece pegadinha.
eu tenho o seguinte calculo dentro de um select maior:
selec (e.vlrvenda * (i.percentual / 100) * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st,
acontece que de vez em quando pode haver um produto com algum percentual zerado, por exemplo:
(10 * (0 / 100) * 120 / 100)* 12 / 100 AS st,
o i.percentual é referente ao ipi e nem todos os produtos são tributados. quando isso acontece o meu calculo vai para zero, estragando toda a conta.
não sei como fazer o calculo da porcentagem de forma que isso não aconteça..
estou tentando aprender sobre sql dinamico mas até agora me parece que não é a sainda!!
Agradeço toda ajuda!
calculo com possivel zero
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 07 Jan 2013 10:18 am
-
- Rank: Analista Pleno
- Mensagens: 108
- Registrado em: Qua, 12 Nov 2008 6:01 pm
- Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer
Oracle Developer
Boa tarde,
quando a coluna vl_percentual for nula (ou zero) não deve ser considerado o percentual no cálculo?
Se sim ficaria + ou - assim:
(e.vlrvenda * (decode(nvl(i.percentual, 0), 0, 1, i.percentual / 100)) * icm.marglucro / 100)* icm.aliqsubtrib / 100
quando a coluna vl_percentual for nula (ou zero) não deve ser considerado o percentual no cálculo?
Se sim ficaria + ou - assim:
(e.vlrvenda * (decode(nvl(i.percentual, 0), 0, 1, i.percentual / 100)) * icm.marglucro / 100)* icm.aliqsubtrib / 100
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 07 Jan 2013 10:18 am
Caro Tora,
De fato agora retorna um valor e não mais o zero.. mas os valores não estao betendo com meus caulculo de ST.
você teria como explicar o que esta funçao decode está fazendo no codigo? em alguns casos parece que esta pegando o vlr_venda /100 e retornando.!
tipo vlr venda = 21.50
ST = 0,2150
De fato agora retorna um valor e não mais o zero.. mas os valores não estao betendo com meus caulculo de ST.
você teria como explicar o que esta funçao decode está fazendo no codigo? em alguns casos parece que esta pegando o vlr_venda /100 e retornando.!
tipo vlr venda = 21.50
ST = 0,2150
-
- Rank: Analista Pleno
- Mensagens: 108
- Registrado em: Qua, 12 Nov 2008 6:01 pm
- Localização: Campo Mourão PR
Renato Pasquini
Oracle Developer
Oracle Developer
boa tarde,
a função decode é bastante simples.
Basicamente, quando o valor da coluna i.percentual é igual a 0 substitua por 1 senão substitua por i.percentual/100.
Expressão: (e.vlrvenda * decode(nvl(i.percentual, 0), 0, 1, (i.percentual / 100)) * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
Quando i.percentual = 0
(e.vlrvenda * 1 * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
Quando i.percentual != 0
(e.vlrvenda * (i.percentual / 100) * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
para mais informações acesse http://www.dba-oracle.com/t_decode_function.htm
a função decode é bastante simples.
Basicamente, quando o valor da coluna i.percentual é igual a 0 substitua por 1 senão substitua por i.percentual/100.
Expressão: (e.vlrvenda * decode(nvl(i.percentual, 0), 0, 1, (i.percentual / 100)) * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
Quando i.percentual = 0
(e.vlrvenda * 1 * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
Quando i.percentual != 0
(e.vlrvenda * (i.percentual / 100) * icm.marglucro / 100)* icm.aliqsubtrib / 100 AS st
para mais informações acesse http://www.dba-oracle.com/t_decode_function.htm
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 07 Jan 2013 10:18 am
Valeu tora!
com este funçao consigo obter os valores!!
não li as regras e não sei como positivar ou encerrar o topico. mas pra mim resolveu..
com este funçao consigo obter os valores!!
não li as regras e não sei como positivar ou encerrar o topico. mas pra mim resolveu..
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 26 visitantes