Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Gostaria que me apoiassem com o seguinte problema:
Preciso identificar se os clientes que compraram num determinado mês selecionado, são novas compras ou não. Para isso tenho dois critérios:
1) O cliente nunca efetuou uma compra efetivamente;
2) A última compra do cliente, antes da compra do mês selecionado foi um mais de 1 ano (Aqui gostaria de deixar "configurável", alternando para 6 meses, por exemplo.
A minha base é uma base de notas fiscais, que contém diversas notas para cada cliente
Obrigado
Por ser uma informação fixa, creio que o ideal é fazer esse cálculo no script de sua aplicação.
Disponibilize um QVW de exemplo para podermos ajuda-lo melhor
Crie algumas variáveis no script,
LET vUltimos12Meses = DATE(ADDMONTHS(MONTHSTART(TODAY()), -12), 'DD/MM/YYYY');
LET vUltimos6Meses = DATE(ADDMONTHS(MONTHSTART(TODAY()), -6), 'DD/MM/YYYY');
Depois você pode calcular dessa forma:
=IF(COUNT({< DATA_VENDA = {'>=$(=Date(vUltimos12Meses))<$(=Date(Monthstart(MES_SELECIONADO)))'} >}
NOTA_FISCAL) > 0, "Sim", "Não") AS NOVA_COMPRA_ULTIMOS_12_MESES
=IF(COUNT({< DATA_VENDA = {'>=$(=Date(vUltimos6Meses))<$(=Date(Monthstart(MES_SELECIONADO)))'} >} NOTA_FISCAL) > 0, "Sim", "Não") AS NOVA_COMPRA_ULTIMOS_6_MESES
Bom dia, Leonardo Jacquier.
A minha dica é desenvolver via script como orientado por nicolett.yuri Sendo que em cada item poderá produzir como abaixo.
1. A não compra do cliente dar-se-á pelo relacionamento entre as tabelas clientes e vendas. Ou seja, não haverá o código do cliente que não comprou à tabela de vendas. Ex.:
Sum({<[%Cod Cliente] = E({<[%Cod Produto] = {"*"} >} [%Cod Cliente]) >} [#Contador Cliente]);
2. Você poderá filtrar o período na carga e montar um relacionamento da tabela de vendas transformada com a fato principal. Omiti a tabela de cliente por subentender que estará carregada. Ex.:
tmp_Vendas:
LOAD
[%Cod Cliente],
Data,
[#Valor Venda]
From <nome tabela>.qvd
(qvd)
where
Data >= MakeDate(Year(Today(2)-180), Month(Today(2)-180));
NoConcatenate
Vendas:
LOAD
[%Cod Cliente],
Date(Data) as Data,
[#Valor Venda]
Resident tmp_Vendas
order by
[%Cod Cliente],
Data;
DROP Table tmp_Vendas;
Vendas_Transform:
LOAD
[%Cod Cliente],
Date(Max(Data,2)) as [Data Compra Anterior],
Date(Max(Date)) as [Data Compra Atual],
Sum([#Valor Venda]) as [#Total Vendas]
resident Vendas
group by
[%Cod Cliente];
Espero que ajude!
Já achou uma solução? Se sim, marque uma das respostas como "Correta" para fechar o tópico e nos ajudar a manter o forum organizado.