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