6 Replies Latest reply: Jan 11, 2017 6:11 AM by Elton Baptista RSS

    Tabela de Metas por Cliente

    Elton Baptista

      Boa tarde Pessoal!

       

      Tenho as metas mensais definidas por cliente, porem a tabela nao tem nenhum campo data !!!

       

      Nao tem campo data pq o valor da meta foi criado na tabela de cadastro do cliente, mas vale para todos os meses.

       

      Deu pra entender? Preciso criar uma tabela com o valor da meta mensal atual do cliente mês-a-mês desde 2010 até hoje.

       

      CLIENTES

      Cliente_IDCliente_NomeCliente_Meta_Mensal
      1Cliente A100
      2Cliente B201


      Para relacionar com as vendas, eu imagino que preciso colocar os dados da tabela de meta por mês, assim:


      META_CLIENTES:

       

      IDDataCliente_IDValor Meta
      101/01/20101100
      201/02/20101100
      301/03/20101100
      401/01/20102201
      501/02/20102201
      601/03/20103201

      ... até 01/01/2017


      Tentei fazer da forma abaixo mas não deu certo, ele faz por dia e multiplica o valor pelos dias dos meses e a meta é mensal


      LET vMesInicial = Date('01/01/2010');

      LET vMesFinal = Date(MonthEnd(Today()));

       

      tmp_data:

      LOAD

      Date(MonthEnd(Today())-Recno()+1,'DD/MM/YYYY') as [Data]

      AUTOGENERATE(vMesFinal-vMesInicial+1);

       

      TMP_Clientes_Meta:

      LOAD

      meta_top_15,

      Cliente_ID    

      Resident Clientes where meta_top_15 > 0;

      LEFT JOIN

      LOAD

      Data

      Resident tmp_data;

       

      Cliente_Meta:

      LOAD

        recno() as Cliente_Meta_ID,

        Year(Data) & Month(Data) & Cliente_ID as Chave_ClienteMeta,

        meta_top_15 as Cliente_Ranking_300_Meta

      Resident TMP_Clientes_Meta;

       

      DROP TABLE tmp_data;

      DROP TABLE TMP_Clientes_Meta;

       


        • Re: Tabela de Metas por Cliente
          Yuri Nicolett

          Elton, mas se a meta é única não teria necessidade de criar mensal. Basta você fazer a ligação através do Client ID.

          • Re: Tabela de Metas por Cliente
            Eduardo DImperio

            Oi Elton,

             

            Tente suprimir os dias, já que a meta é mensal.

             

            tmp_data:

            LOAD

            LET vMesInicial=date(floor(monthstart(addmonths(Today()))), 'YYYYMM');

            AUTOGENERATE(vMesInicial+1);

            • Re: Tabela de Metas por Cliente
              Alessandro Furtado

              Elton,

               

              Concordo com o nicolett.yuri    Não sei o porque nao deixar na tabela cliente....

               

              Outro problema seria que criar um calendario de 2010 para ca nao necessariamente o cliente era cliente naquele ano....Deveria ter uma data inicial para cada cliente de acordo com a data de inicio dele.

               

               

              Mas,para criar um calendário (primeiro dia do mês)

               

              Dai poderia ser criado uma tabela com o codigo cliente e a meta e dar um join no calendario (criaria meta para todas as datas).

               

               

               

              //=======================================================================================

              //

              // Criar calendário primeiro dia do mês.....

              //

              LET vDateMin    = num(date(date#('01/01/2010','DD/MM/YYYY')));

              LET vDateMax   = num(MakeDate(year(Today()),12,31));

               

               

              Calendario: 

              LOAD

                 Date(MonthStart( AddMonths( $(vDateMin) , RowNo() )))      AS Data

                 AUTOGENERATE 1

              WHILE AddMonths( $(vDateMin) , RowNo() ) <  $(vDateMax); 

              //=======================================================================================

               

              MetaCliente:

              LOAD

                     meta_top_15                 as Meta_Cliente,    // Para nao dar chave sintetica

                     Cliente_ID   

              Resident Clientes where meta_top_15 > 0;

              join

              LOAD Data Resident Calendario;

              //

              drop table Calendario;

               

               

               

              Dai daria para concatenar esta tabela aonde tens a venda.....Mas depende de como esta montada, quem sabe criando ainda ano e mes...