Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
andre_tonini
Creator II
Creator II

Expressão - Classificação e Junção 2 Valores

Bom dia,

          Pessoal estou com uma dúvida ao elaborar uma expressão, pois preciso adicionar um cálculo somente quando o campo for igual CD_CONTADET = '93'.

1) Essa é a expressão geral que uso para todas as CD_CONTADET.

((SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'C',VL_BAIXA,0))-

SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'D',VL_BAIXA,0)))

2) Agora o que preciso é unir abaixo a Expressão A + Expressão B, numa só quando CD_CONTADET = '93'.

Expressão A:

(SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'C' AND CD_CONTADET = '93',VL_BAIXA,0))-

SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'D' AND CD_CONTADET = '93',VL_BAIXA,0)))

Expressão B:

(SUM(IF(ANO_BXA_ = '2014' AND MES_BXA_ = 'jul' AND PC_COMISSAO <> '0',VL_COMISSAO,0)))

Att,

André Tonini

Labels (1)
1 Solution

Accepted Solutions
Not applicable

Eu criei uma carga com os dados do exemplo que você postou,

logo apos criei uma chave por mes/ano, e o gráfico de tabela com as dimensões  CD_CONTADET, NM_CONTADET, ANO_BXA, MES_BXA.

segue scripts:

Carga usada no exeplo

//Cargas

FINANCEIRO_TMP:

LOAD * INLINE [

    CD_CONTADET, NM_CONTADET, ANO_BXA, MES_BXA, VALOR_FINANCEIRO

    2, Engenharia Elétrica, 2014, jul, 1000

    6, Telefone, 2014, jul, 2000

    93, Salário Motorista, 2014, jul, 10000

];

COMISSAO_TMP:

LOAD * INLINE [

    CD_MOTORISTA, NM_MOTORISTA, ANO_BXA_C, MES_BXA_C, VALOR_COMISSAO

    1, Pedro, 2014, jun, 600

    2, João, 2014, jul, 500

    18, Pedro, 2014, jul, 700

    27, Antonio, 2014, jul, 1300

];

//Criando uma Chave Mês_Ano

FINANCEIRO:

NoConcatenate

LOAD *,

   MES_BXA&ANO_BXA as MesAno

Resident FINANCEIRO_TMP;

DROP Table FINANCEIRO_TMP;

COMISSAO:

NoConcatenate

LOAD *,

   MES_BXA_C&ANO_BXA_C as MesAno

Resident COMISSAO_TMP;

DROP Table COMISSAO_TMP;

Expressão do gráfico:

if(CD_CONTADET = 93

  ,sum(VALOR_FINANCEIRO)+ Sum(VALOR_COMISSAO)

  ,sum(VALOR_FINANCEIRO))

View solution in original post

6 Replies
matzenbacher
Creator II
Creator II

E ai Andre, ja tentou set analysis, seria mais ou menos isso?

(sum({<   ANO_BXA = {2014}, MES_BXA = {'jul'} , FL_DC = {'C'} , CD_CONTADET = {93}  >}VL_BAIXA)

-

sum({<   ANO_BXA = {2014}, MES_BXA = {'jul'} , FL_DC = {'D'} , CD_CONTADET = {93}   >}VL_BAIXA))

+

sum( {<NO_BXA = {2014}, MES_BXA = {'jul'} , CD_CONTADET = {93}. PC_COMISSAO -= {0}  >}   VL_COMISSAO)


Not applicable

Boa tarde André Tonini

Você ja tentou usar um IF para isso?

Ex:

If(CD_CONTADET = '93'

  ,((SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'C' AND CD_CONTADET = '93',VL_BAIXA,0))-

  SUM(IF(ANO_BXA = '2014' AND MES_BXA = 'jul' AND FL_DC = 'D' AND CD_CONTADET = '93',VL_BAIXA,0))))

  ,(SUM(IF(ANO_BXA_ = '2014' AND MES_BXA_ = 'jul' AND PC_COMISSAO <> '0',VL_COMISSAO,0)))

  )

andre_tonini
Creator II
Creator II
Author

Kaauan e Marciel,

       Boa tarde, grato pelo retorno porém acabei mudando um pouco a minha pergunta, pois como coloquei acima eu estava fazendo a ligação entre as tabelas pelo campo CD_CONTADET, porém esse campo não existia na tabela comissão - então havia criado no excel e via load no script fazia essa "amarração"...mas ficou muito pesado a carga e virou uma gambiarra.

       Bom então reformulando a minha pergunta, vamos ver se isso é possivel:

a) Tenho uma tabela chamada financeiro, que apresenta os seguintes campos.

1.jpg

b) Tenho uma outra tabela chamada comissão, que não faz ligação direta com a tabela anterior, apenas os campos ANO_BXA e MES_BXA são semelhantes.

1.jpg

c) Bom agora é que vem o meu problema, existe uma maneira de somar o Valor Comissão (ano_bxa=2014,mes_bxa='jul') R$ 2.500,00 com o Valor Financeiro da CD_CONTADET = '93'?
Pois nesse cenário que estou criando entendemos que o CD_CONTADET = 93 deverá ser composto pelo 10.000,00 (salário motorista) + 2.500,00 (comissão).

2.jpg

Att,

André Tonini

Not applicable

André, segue um exemplo, veja se atente a sua duvida.

andre_tonini
Creator II
Creator II
Author

Olá Marciel, desculpa mas não estou conseguindo abrir o qvw, você consegue postar o script e a expressão?

Grato

André

Not applicable

Eu criei uma carga com os dados do exemplo que você postou,

logo apos criei uma chave por mes/ano, e o gráfico de tabela com as dimensões  CD_CONTADET, NM_CONTADET, ANO_BXA, MES_BXA.

segue scripts:

Carga usada no exeplo

//Cargas

FINANCEIRO_TMP:

LOAD * INLINE [

    CD_CONTADET, NM_CONTADET, ANO_BXA, MES_BXA, VALOR_FINANCEIRO

    2, Engenharia Elétrica, 2014, jul, 1000

    6, Telefone, 2014, jul, 2000

    93, Salário Motorista, 2014, jul, 10000

];

COMISSAO_TMP:

LOAD * INLINE [

    CD_MOTORISTA, NM_MOTORISTA, ANO_BXA_C, MES_BXA_C, VALOR_COMISSAO

    1, Pedro, 2014, jun, 600

    2, João, 2014, jul, 500

    18, Pedro, 2014, jul, 700

    27, Antonio, 2014, jul, 1300

];

//Criando uma Chave Mês_Ano

FINANCEIRO:

NoConcatenate

LOAD *,

   MES_BXA&ANO_BXA as MesAno

Resident FINANCEIRO_TMP;

DROP Table FINANCEIRO_TMP;

COMISSAO:

NoConcatenate

LOAD *,

   MES_BXA_C&ANO_BXA_C as MesAno

Resident COMISSAO_TMP;

DROP Table COMISSAO_TMP;

Expressão do gráfico:

if(CD_CONTADET = 93

  ,sum(VALOR_FINANCEIRO)+ Sum(VALOR_COMISSAO)

  ,sum(VALOR_FINANCEIRO))