10 Replies Latest reply: Aug 9, 2016 5:30 PM by Clever Anjos RSS

    Faturamento dos últimos 12 meses

    Januario Lachman Junior

      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!