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: 
Not applicable

Faturamento dos últimos 12 meses

Pessoal, boa tarde!

Estou querendo pegar o último mês de faturamento cadastrado na base que seja ANTERIOR a uma data de contratação. No script coloquei o comando abaixo, mas não sei “quem” executa esta query, se o QLIK ou se pelo ODBC do Oracle roda em outro lugar, pois coloquei comandos PLSQL.

left join (PRO_PROCESSOS)

SELECT A.ID_PESSOA,

       P.ID_PROCESSO,

       MAX( TO_NUMBER(TO_CHAR(A.DT_FATURAMENTO, 'YYYYMM')) ) AS MAX_ID_ANO_MES_FATURAMENTO

FROM   ANP.ANP_FATURAMENTOS A,

       PRO.PRO_PROCESSOS    P

WHERE  A.ID_PESSOA = P.ID_PESSOA_EMPRESA   AND

TO_NUMBER(TO_CHAR(A.DT_FATURAMENTO, 'YYYYMM')) < TO_NUMBER(TO_CHAR(NVL(P.DT_CONTRATO, P.DT_ENTRADA) , 'YYYYMM'))

GROUP BY A.ID_PESSOA, P.ID_PROCESSO;


                Os campos ID_PESSOA e ID_PROCESSO existem na tabela que está sendo montada.

Porém este comando trouxe para apenas algumas operações o campo “MAX_ID_ANO_MES_FATURAMENTO”, sendo que deveria ter trazido para quase todas as operações. Como te falei, uma empresa pode ter mais de uma operação..

EX: Operação 1 – 200910 (contratação)

  • Queria trazer os último 12 faturamentos anteriores, que pode ser o 200909, como pode ser o 200907, enfim, vai depender do cadastro.

       Operação2 – 201305 (contratação)

  • Queria trazer os último 12 faturamentos anteriores, que pode ser o 201304, como pode ser o 201212, enfim, vai depender do cadastro.

       Etc....

     Aí na aplicação tentei buscar diretamente sem este campo MAX_ID_AO_MES_FATURAMENTO, para depois tentar montar o esquema dos últimos 12 faturamentos, mas na hora de buscar o MAX já não consigo, pois com “variável” funciona, mas comparando campo com campo da tabela está estranho:

max( {< ANO_MES_FATURAMENTO = {'<$(=(ANO_MES_CONTRATO))'}  >}  ANO_MES_FATURAMENTO )

Max_Faturamento.png

     Aí tentei buscar direto a ROB pelo comando abaixo, mas não “respeita” as dimensões ID_PESSOA e ID_PROCESSO, trouxe o mesmo faturamento para qualquer data de contratação, desta forma também estaria errado, pois o último mês cadastrado não é obrigatoriamente o mês posterior a contratação (ANO_MES_ONTRATO):

Sum({$<ANO_MES_FATURAMENTO={">=$(=addmonths(monthstart(max(ANO_MES_CONTRATO)),-11)) <=$(=(monthend(max(ANO_MES_CONTRATO))))"} >} VL_FATURAMENTO)

ROB_Faturamento.png

Existe uma tabela dimensão separada chamada DIM_FATURAMENTOS, com os campos ID_PESSOA (chave), ANO_MES_FATURAMENTO e VL_FATURAMENTO.

// Faturamentos da empresa

DIM_FATURAMENTO:

LOAD ID_PESSOA,

Num#(Date( DT_FATURAMENTO, 'YYYYMM'))   AS ANO_MES_FATURAMENTO,

VL_FATURAMENTO

FROM [lib://QVD/ANP_FATURAMENTOS.QVD](qvd)

WHERE Exists(ID_PESSOA);

    

  Como fazer isto pessoal?


Desde já agradeço!

Labels (4)
10 Replies
Clever_Anjos
Employee
Employee

Já conseguiu resolver?

pablolabbe
Luminary Alumni
Luminary Alumni

Oi Januario,

  Sobre a consulta SQL, ela é executada pelo Oracle, mas o resultado devolvido pelo Oracle é incluido via join na tabela em memória PRO_PROCESSOS.

  Quanto ao seu problema, fiquei confuso. Não vou conseguir ajudar.

nicolett_yuri

Não consegui entender sua dúvida, pode postar uma app?

Clever_Anjos
Employee
Employee

Esse set analysis abaixo não funciona e não é avaliado a cada linha. Um Set analysis é avaliado apenas uma vez antes da agregação do objeto.

max( {< ANO_MES_FATURAMENTO = {'<$(=(ANO_MES_CONTRATO))'}  >}  ANO_MES_FATURAMENTO )

Not applicable
Author

Caro Yuri, boa tarde!

Posso passar o .QVF para dares uma olhada?

Como falei, existe um campo ANO_MES_CONTRATO, e a partir deste quero buscar o último ANO_MES_FATURAMENTO cadastrado na base, que pode ser logo o mês anterior a contratação, ou alguns meses atrás.

Exemplo:

ANO_MES_CONTRATO : 201608 (agosto de 2016)

o ANO_MES_FATURAMENTO poderá ser o 201607(julho de 2016) ou algum mês anterior como 201606, 201605.... 201601. Aí ao encontrar este último (MAX) mês de faturamento cadastrado, vou pegar os últimos 12(doze) meses a partir deste e somar o campo VL_FATURAMENTO para obter a ROB (Receita Operacional Bruta).

Não sei se o mais fácil é fazer isto no script de carregamento, ou se pela aplicação Qlik Sense.

Desde já agradeço.

Not applicable
Author

Caro Clever, boa tarde!

Posso passar o .QVF para dares uma olhada?

Como falei, existe um campo ANO_MES_CONTRATO, e a partir deste quero buscar o último ANO_MES_FATURAMENTO cadastrado na base, que pode ser logo o mês anterior a contratação, ou alguns meses atrás.

Exemplo:

ANO_MES_CONTRATO : 201608 (agosto de 2016)

o ANO_MES_FATURAMENTO poderá ser o 201607(julho de 2016) ou algum mês anterior como 201606, 201605.... 201601. Aí ao encontrar este último (MAX) mês de faturamento cadastrado, vou pegar os últimos 12(doze) meses a partir deste e somar o campo VL_FATURAMENTO para obter a ROB (Receita Operacional Bruta).

Não sei se o mais fácil é fazer isto no script de carregamento, ou se pela aplicação Qlik Sense.

Desde já agradeço.

Clever_Anjos
Employee
Employee

Poste o qvf, se possível

Not applicable
Author

Caro Clever, segue a aplicação, deixei os dados de um cliente, segue anexo também um excel com os faturamentos existentes.

Grato!

Januario

Clever_Anjos
Employee
Employee

Para anexar:

Capturar2.PNG

Capturar.PNG