Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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_ID | Cliente_Nome | Cliente_Meta_Mensal |
---|---|---|
1 | Cliente A | 100 |
2 | Cliente B | 201 |
Para relacionar com as vendas, eu imagino que preciso colocar os dados da tabela de meta por mês, assim:
META_CLIENTES:
ID | Data | Cliente_ID | Valor Meta |
---|---|---|---|
1 | 01/01/2010 | 1 | 100 |
2 | 01/02/2010 | 1 | 100 |
3 | 01/03/2010 | 1 | 100 |
4 | 01/01/2010 | 2 | 201 |
5 | 01/02/2010 | 2 | 201 |
6 | 01/03/2010 | 3 | 201 |
... 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;
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...
Elton, mas se a meta é única não teria necessidade de criar mensal. Basta você fazer a ligação através do Client ID.
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);
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!
Obrgiado Eduardo, mas eu nao consegui entender e o QV deu erro.
Pode explicar um pouco mais?
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...
Deu certo! Muito obrigado