Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
luizclaudio
Creator
Creator

Cálculo de percentual de campo no script

Preciso, em determinada situação, considerar apenas 60% do valor de um campo.

É possível calcular no script? Ou seria melhor já preparar isso na base antes da carga?

algo como

if(tipo=1670,valor*0.6,valor) as vlr,

Tentei algo assim, mas dá erro no script.

Luiz Cláudio

Labels (1)
1 Solution

Accepted Solutions
EduardoAlexandredeFrancisco

Luiz, é simples..

você esta usando uma sintaxe do QlikView no SQL

Mude seu IF para CASE

If("Tipo Contribuicao"='1670',"Valor Contribuicao"*0.6) as "Valor Contribuicao",

Case when  "Tipo Contribuicao"='1670' then  "Valor Contribuicao"*0.6 else  "Valor Contribuicao" end as "Valor Contribuicao"

Ou carregue as tabelas SQL e no LOAD vc aplica o if.

Load

campo1,

campo2,

campo3,

if (campo1 ='xxx', campo4 * 0.6) as vle,

SQL

select * FROM SINCOR.dbo."Contribuicoes Sabro_Qlik"

Outra duvidas.. Esse BD é do Hcor???

View solution in original post

7 Replies
EduardoAlexandredeFrancisco

Consegue publicar o qvw para te ajudar?

EduardoAlexandredeFrancisco

tentou fazer assim:

if(tipo='1670',valor*0.6,valor) as vlr,

Segue exemplo

teste:

LOAD * INLINE [

codigo, valor

a,1

b,2

c,3

];

teste_final:

load

  codigo as cod,

  if(codigo = 'b',valor*0.6,valor) as val

Resident teste;

drop Table teste

luizclaudio
Creator
Creator
Author

Eduardo,

O script dá erro de sintaxe...

If("Tipo Contribuicao"='1670',"Valor Contribuicao"*0.6,"Valor Contribuicao") as "Valor Contribuicao",

abaixo está o trecho completo do script

SQL SELECT "Dado_ID" as "Tipo Contribuicao",

    UPPER(Dado) as Contribuição,

    DadDadosTipoID

FROM SINCOR.dbo.Dados

WHERE Dado_ID > 1668 and Dado_ID < 1672;

// Carrega as Contribuições do Sabro

SQL SELECT "Processo_ID",

    "Corretor ID" as Corretor_ID,

    "Tipo Contribuicao",

    Exercicio,

    Parcela,

//    "Valor Contribuicao",

If("Tipo Contribuicao"='1670',"Valor Contribuicao"*0.6) as "Valor Contribuicao",

    "Data Vencimento",

    "Data Pagamento",

    "Valor Pago",

    Multa,

    Juros,

    Pago

FROM SINCOR.dbo."Contribuicoes Sabro_Qlik";

EduardoAlexandredeFrancisco

Luiz, é simples..

você esta usando uma sintaxe do QlikView no SQL

Mude seu IF para CASE

If("Tipo Contribuicao"='1670',"Valor Contribuicao"*0.6) as "Valor Contribuicao",

Case when  "Tipo Contribuicao"='1670' then  "Valor Contribuicao"*0.6 else  "Valor Contribuicao" end as "Valor Contribuicao"

Ou carregue as tabelas SQL e no LOAD vc aplica o if.

Load

campo1,

campo2,

campo3,

if (campo1 ='xxx', campo4 * 0.6) as vle,

SQL

select * FROM SINCOR.dbo."Contribuicoes Sabro_Qlik"

Outra duvidas.. Esse BD é do Hcor???

luizclaudio
Creator
Creator
Author

Agora funcionou certinho, Eduardo.

Não entendi sua pergunta..

Hcor?

Luiz Cláudio

EduardoAlexandredeFrancisco

Hcor = Empresa Hospital do Coração...

Pq lá eles tem um BD chamado SinCor

luizclaudio
Creator
Creator
Author

Não.. Apenas coincidência.

Trabalho com gestão de sindicatos patronais. Neste caso, estou analisando alguns dados de um Sincor (Sindicato de Corretores de Seguros).