Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Tabela de Metas por Cliente

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;


1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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

furtado@farolbi.com.br

View solution in original post

6 Replies
nicolett_yuri

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

eduardo_dimperio
Specialist II
Specialist II

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);

Not applicable
Author

Então Yuri, o problema é relacionar isso com as vendas, fazer somatórias, etc.

Por exemplo, eu tenho uma tabela dinamica (ano e mes), uma coluna com vendas e somatória por ano. A meta não soma!

Captura de tela_2017-01-10_18-05-26.png

Not applicable
Author

Obrgiado Eduardo, mas eu nao consegui entender e o QV deu erro.

Pode explicar um pouco mais?

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

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

furtado@farolbi.com.br
Not applicable
Author

Deu certo! Muito obrigado