Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, Boa Tarde!
Tudo Bem?
Preciso de uma ajuda de vocês mais uma vez para a seguinte questão, algo muito parecido como o que eu havia postado\nteriormente, agora mais detalhado.
Um dos meus principais indicadores é a curva de vendas comparada com a data equivalente, ou seja, a comparação das vendas de hoje com o mesmo período no ano anterior, para isso tenho duas tabelas (Tabela Data Equivalente por Marca, Tabela Vendas Históricas). Na tabela "Tabela Data Equivalente por Marca" tenho as datas equivalentes em 2016 para cada venda em 2017, só que agora por marca. Na tabela "Vendas Históricas", todas as vendas históricas por marca e cliente. Eu preciso montar uma tabela que mostre a data atual, as vendas no período atual e as vendas no período correspondente por cliente e marca conforme exemplo:.
Tabela Data Equivalente por Marca:
MARCA | Data | Data Equivalente |
MARCA001 | 01/01/2017 | 31/12/2015 |
MARCA001 | 02/01/2017 | 01/01/2016 |
MARCA001 | 03/01/2017 | 02/01/2016 |
MARCA002 | 01/01/2017 | 01/01/2016 |
MARCA002 | 02/01/2017 | 02/01/2016 |
MARCA002 | 03/01/2017 | 03/01/2016 |
MARCA003 | 01/01/2017 | 30/12/2015 |
MARCA003 | 02/01/2017 | 31/12/2015 |
MARCA003 | 03/01/2017 | 01/01/2016 |
Tabela Vendas Históricas:
Data | CLIENTE | MARCA | Vendas |
31/12/2015 | 1000005 | MARCA001 | R$ 27.564,00 |
01/01/2016 | 1000005 | MARCA001 | R$ 26.361,00 |
02/01/2016 | 1000005 | MARCA001 | R$ 23.996,00 |
01/01/2016 | 1000005 | MARCA002 | R$ 27.392,00 |
02/01/2016 | 1000005 | MARCA002 | R$ 27.460,00 |
03/01/2016 | 1000005 | MARCA002 | R$ 22.021,00 |
30/12/2015 | 1000005 | MARCA003 | R$ 25.954,00 |
31/12/2015 | 1000005 | MARCA003 | R$ 21.351,00 |
01/01/2016 | 1000005 | MARCA003 | R$ 27.725,00 |
01/01/2017 | 1000005 | MARCA001 | R$ 22.237,00 |
02/01/2017 | 1000005 | MARCA001 | R$ 27.224,00 |
03/01/2017 | 1000005 | MARCA001 | R$ 24.211,00 |
01/01/2017 | 1000005 | MARCA002 | R$ 20.039,00 |
02/01/2017 | 1000005 | MARCA002 | R$ 24.792,00 |
03/01/2017 | 1000005 | MARCA002 | R$ 20.861,00 |
01/01/2017 | 1000005 | MARCA003 | R$ 25.783,00 |
02/01/2017 | 1000005 | MARCA003 | R$ 20.119,00 |
03/01/2017 | 1000005 | MARCA003 | R$ 25.320,00 |
31/12/2015 | 1000006 | MARCA001 | R$ 27.281,00 |
01/01/2016 | 1000006 | MARCA001 | R$ 26.564,00 |
02/01/2016 | 1000006 | MARCA001 | R$ 20.613,00 |
01/01/2016 | 1000006 | MARCA002 | R$ 27.393,00 |
02/01/2016 | 1000006 | MARCA002 | R$ 25.392,00 |
03/01/2016 | 1000006 | MARCA002 | R$ 29.758,00 |
30/12/2015 | 1000006 | MARCA003 | R$ 26.790,00 |
31/12/2015 | 1000006 | MARCA003 | R$ 28.327,00 |
01/01/2016 | 1000006 | MARCA003 | R$ 26.571,00 |
01/01/2017 | 1000006 | MARCA001 | R$ 25.493,00 |
02/01/2017 | 1000006 | MARCA001 | R$ 25.779,00 |
03/01/2017 | 1000006 | MARCA001 | R$ 24.640,00 |
01/01/2017 | 1000006 | MARCA002 | R$ 21.099,00 |
02/01/2017 | 1000006 | MARCA002 | R$ 26.751,00 |
03/01/2017 | 1000006 | MARCA002 | R$ 29.313,00 |
01/01/2017 | 1000006 | MARCA003 | R$ 26.424,00 |
02/01/2017 | 1000006 | MARCA003 | R$ 20.028,00 |
03/01/2017 | 1000006 | MARCA003 | R$ 20.681,00 |
Tabela Final:
Data | MARCA | CLIENTE | Data Equivalente | Venda Atual | VendaDataEquivalente2016 |
01/01/2017 | MARCA001 | 1000005 | 31/12/2015 | R$ 22.237,00 | R$ 27.564,00 |
02/01/2017 | MARCA001 | 1000005 | 01/01/2016 | R$ 27.224,00 | R$ 26.361,00 |
01/01/2017 | MARCA002 | 1000005 | 01/01/2016 | R$ 20.039,00 | R$ 27.392,00 |
02/01/2017 | MARCA002 | 1000005 | 02/01/2016 | R$ 24.792,00 | R$ 27.460,00 |
01/01/2017 | MARCA003 | 1000005 | 30/12/2015 | R$ 25.783,00 | R$ 25.954,00 |
02/01/2017 | MARCA003 | 1000005 | 31/12/2015 | R$ 20.119,00 | R$ 21.351,00 |
Tentei utilizar o Inner Join, mas ele duplica os valores para trazer as vendas equivalentes
Mensagem editada por: Anderson Silva Ajustei a tabela Final com o resultado esperado
Bom dia Anderson
Se você fizer o Join entre MARCA/DATA EQUIVALENTE da primeira tabela e MARCA/DATA da segunda tabela não funciona?
Se possível poste um exemplo para facilitar a análise do problema.
Marcio, Obrigado pela resposta.
Estou começando meus conhecimentos em SQL, acho que estou errando em alguma coisa simples.
Segue o script
Calendardeparatmp:
LOAD * INLINE [
MARCA, Data, DataEquivalente,
MARCA001, 01/01/2017, 31/12/2015
MARCA001, 02/01/2017, 01/01/2016
MARCA001, 03/01/2017, 02/01/2016
MARCA002, 01/01/2017, 01/01/2016
MARCA002, 02/01/2017, 02/01/2016
MARCA002, 03/01/2017, 03/01/2016
MARCA003, 01/01/2017, 30/12/2015
MARCA003, 02/01/2017, 31/12/2015
MARCA003, 03/01/2017, 01/01/2016
];
Vendastmp:
LOAD * INLINE [
Data, CLIENTE, MARCA, Vendas
31/12/2015, 1000005, MARCA001, R$ 27.564,00
01/01/2016, 1000005, MARCA001, R$ 26.361,00
02/01/2016, 1000005, MARCA001, R$ 23.996,00
01/01/2016, 1000005, MARCA002, R$ 27.392,00
02/01/2016, 1000005, MARCA002, R$ 27.460,00
03/01/2016, 1000005, MARCA002, R$ 22.021,00
30/12/2015, 1000005, MARCA003, R$ 25.954,00
31/12/2015, 1000005, MARCA003, R$ 21.351,00
01/01/2016, 1000005, MARCA003, R$ 27.725,00
01/01/2017, 1000005, MARCA001, R$ 22.237,00
02/01/2017, 1000005, MARCA001, R$ 27.224,00
03/01/2017, 1000005, MARCA001, R$ 24.211,00
01/01/2017, 1000005, MARCA002, R$ 20.039,00
02/01/2017, 1000005, MARCA002, R$ 24.792,00
03/01/2017, 1000005, MARCA002, R$ 20.861,00
01/01/2017, 1000005, MARCA003, R$ 25.783,00
02/01/2017, 1000005, MARCA003, R$ 20.119,00
03/01/2017, 1000005, MARCA003, R$ 25.320,00
31/12/2015, 1000006, MARCA001, R$ 27.281,00
01/01/2016, 1000006, MARCA001, R$ 26.564,00
02/01/2016, 1000006, MARCA001, R$ 20.613,00
01/01/2016, 1000006, MARCA002, R$ 27.393,00
02/01/2016, 1000006, MARCA002, R$ 25.392,00
03/01/2016, 1000006, MARCA002, R$ 29.758,00
30/12/2015, 1000006, MARCA003, R$ 26.790,00
31/12/2015, 1000006, MARCA003, R$ 28.327,00
01/01/2016, 1000006, MARCA003, R$ 26.571,00
01/01/2017, 1000006, MARCA001, R$ 25.493,00
02/01/2017, 1000006, MARCA001, R$ 25.779,00
03/01/2017, 1000006, MARCA001, R$ 24.640,00
01/01/2017, 1000006, MARCA002, R$ 21.099,00
02/01/2017, 1000006, MARCA002, R$ 26.751,00
03/01/2017, 1000006, MARCA002, R$ 29.313,00
01/01/2017, 1000006, MARCA003, R$ 26.424,00
02/01/2017, 1000006, MARCA003, R$ 20.028,00
03/01/2017, 1000006, MARCA003, R$ 20.681,00
];
Vendastmp1:
NoConcatenate
load * Resident Vendastmp;
Vendastmp2:
NoConcatenate
Load Data as DataEquivalente,MARCA as MARCA,Vendas as ValorEquival Resident Vendastmp;
Inner join(Calendardeparatmp)
load * Resident Vendastmp1;
Inner join(Calendardeparatmp)
load * Resident Vendastmp2;
drop Tables Vendastmp,Vendastmp1,Vendastmp2;
Abs,
Anderson
Acho que funcionou.
Remova o último Inner Join e faça a recarga para ver o resultado.
Márcio, quase deu certo aqui.
Retirei o último join, mas não retornou o valor das vendas equivalentes.
Anderson
Analisando melhor o caso percebo que o seu problema é o código do cliente na tabela de vendas. Ele não está informado no Load da tabela Vendastmp2.
Altere conforme abaixo:
Vendastmp2:
NoConcatenate
Load Data as DataEquivalente, CLIENTE, MARCA,Vendas as ValorEquival Resident Vendastmp;
Oi Marcio,
Alterei,mas ainda não funcionou.
Estou postando o modelo de dados.
Anderson
Segue.
Marcio, Sensacional!!!
Era isso mesmo que eu precisava.
Obrigado!
Marcio, Boa Noite, Tudo Bem?
Preciso de mais uma dica sua sobre essa mesma situação.
Tentei bastante até localizar o problema. A tabela só retorna as vendas que são coincidentes entre marca, data e cliente. Isso acontece por conta do Inner Join.
Eu precisava alterar os script para que ele continue considerando as datas equivalentes, marca e clientes, mas trazendo os valores de zero na venda atual quando houver venda na data correspondente e não na atual e o valor da venda no campo 'venda equivalente' e vice e versa no caso da venda correspondente x atual, além de trazer os casos coincidentes. Sei que ficou complicado mas segue o exemplo da saída:
Dessa forma retornará todos valores das datas atuais e equivalentes independentemente da ausência de um valor ou outro.
Data | MARCA | CLIENTE | Data Equivalente | Venda Atual | VendaDataEquivalente2016 |
01/01/2017 | MARCA001 | 1000005 | 31/12/2015 | R$ 22.237,00 | R$ 27.564,00 |
02/01/2017 | MARCA001 | 1000005 | 01/01/2016 | R$ 26.361,00 | |
01/01/2017 | MARCA002 | 1000005 | 01/01/2016 | R$ 20.039,00 | R$ 27.392,00 |
02/01/2017 | MARCA002 | 1000005 | 02/01/2016 | R$ 27.460,00 |
Abs,