Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

IF: Caso seja zero não calcule nada.

Pessoa tenho uma comissão que funciona assim,

Caso a Coluna 2 seja menor que 1500 ela não paga nada e deveria ficar zero.

Mas caso a coluna 2 seja maior que 1500 ele continua para o segundo if

Condição 1:

if(((column(2))) < '1500',0,

Condição 2

Caso a coluna 1 seja maior que 1500, e coluna 5 for maior coluna 1 então ele

      if(column(2)> 1500,(column(2)) * Centavo_NorteSul))

      if(colum(5))> Colunn(1) * CentavoBonus_NorteSul))

Preciso fazer o if correto - alguma sugestão...

Exemplo:

5.395 > 1500 = OK

1026 > 1500 = 0

2016-10-31_12-15-19.png

Neves
1 Solution

Accepted Solutions
luizclaudio
Creator
Creator

Acho que vc deve testar os valores

experimente colocar isso

if(column(2) < 1500,0, if(column(5) > column(1), column(2),0))  --> deve apresentar o valor de column(2)


if(column(2) < 1500,0, if(column(5) > column(1), CentavoBonus_NorteSul,0)) --> deve apresentar o valor de CentavoBonus_NorteSul


Apenas para conferir se realmente eles estão com valor diferente de zero


View solution in original post

17 Replies
luizclaudio
Creator
Creator

Boa tarde Geraldo

Não ficou muito claro a sua pergunta. Infelizmente não posso abrir o seu qvw pois a minha versão do Qlikview é a de uso restrito.

A condição 1 está ok.... se a coluna 2 for menor que 1500 é igual a zero.

Mas na segunda condição está meio confusa...

Tem dois cálculos? É isso?

A condição 2 é:

column(2) ou column(1) maior que 1500???

Além disso, está faltando tratar caso a coluna seja igual a 1500, correto? Não deve haver uma condição de menor ou igual?

Ou maior ou igual?

Condição 2

Caso a coluna 1 seja maior que 1500, e coluna 5 for maior coluna 1 então ele

      if(column(2)> 1500,(column(2)) * Centavo_NorteSul))

      if(colum(5))> Colunn(1) * CentavoBonus_NorteSul))

paulovendruscol
Creator
Creator

Agnaldo,

Sua expressão está com erro de sintaxe e também não está claro a regra que você precisa.

Ribeiro
Specialist
Specialist
Author

Peço desculpas.

O que preciso é simples,

A expressão está dando erro.

Caso a coluna 5 for maior que a coluna 1 ele faça

Column(2)) = 7.648

*

CentavoBonus_NorteSul = 0,01

Total: 76,48

Apenas preciso consertar a expressão abaixo está errada. Alguma dica de como resolver.

if(((column(2))) < '1500',0,

if( (column(5)> (Column(1))),  Column(2)) *CentavoBonus_NorteSul))

2016-11-10_15-31-13.png

Neves
luizclaudio
Creator
Creator

Vamos ver entendi agora...

Mas aqui ainda falta o que fazer se column(2) > 1500 e column(5) < column(1)

É zero???

Se for zero, creio que isso funcionará.

if(column(2) < 1500,0, if(column(5) > column(1), column(2) * CentavoBonus_NorteSul,0))


Caso tenha outro cálculo, basta inserir no lugar do zero ao final da expressão acima.


Outra coisa, Agnaldo.

Falta analisar o que acontece quanto o valor for igual...

Verifique se não tem que usar menor ou igual

Ribeiro
Specialist
Specialist
Author

Luiz, é por ahi. Mas os valores está ficando branco,

precise que ele some

Column(2)) = 7.648

*

CentavoBonus_NorteSul = 0,01

Total: 76,48

Lembrado que só poderá somar. Se a coluna 5 for > coluna 1

2016-11-10_16-01-52.png

Neves
mauroponte
Creator II
Creator II

Agnaldo,

Tente

if([ADITIVADA (lts)]< '1500',0,

if(MIX_ATUAL>MIX_META, [ADITIVADA (lts)] * Centavo_NorteSul))

Ribeiro
Specialist
Specialist
Author

mauro é o mesmo que isso

if(column(2) < 1500,0,

if(column(5) > column(1), column(2) * CentavoBonus_NorteSul))

está ficando branco

Neves
paulovendruscol
Creator
Creator

Está ficando branco, pois sua condição atual está configurada para apresentar em branco caso não seja atendido a regra dos ifs,  ou seja, se a sua regra não atender o 1 if e o segundo if o que deve ser exibido? Na sua expressão vai exibir branco para exibir 0 basta vc utilizar o exemplo do Luiz.

if(column(2) < 1500,0, if(column(5) > column(1), column(2) * CentavoBonus_NorteSul,0))

Ribeiro
Specialist
Specialist
Author

Bom Paulo,

Talvez tenha me expressando errado.

Veja a imagem abaixo:

if(column(2) < 1500,0,

7.648 < 1500 Certo

Caso fosse 0. Gostaria que ele não continue e atribua 0. Mas caso seja maior que 1500 ele continue...

Continua....

if(column(5) > column(1),

33,59           > 21

Caso fosse menor que 21 ele também atribua 0

Continua....

Todos as condições foram realizadas.

Agora preciso que some.

column(2) * CentavoBonus_NorteSul))

7.648 * 0,01 = 76,48

Talvez tenha que refazer a expressão correta. Não sei como...

Tenho certeza que preciso refazer todos os if mas preciso de ajuda...

2016-11-10_15-31-13.png

Neves