Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde! Estou tendo dificuldade com uma situação...
Minhas tabelas de movimento de produtos é separadas por mês e ano (Ex.: movprodd0719, movprodd0619, movprodd0519, etc). Estou tentando criar uma carga de dados pra armazenar em um QVD os últimos 6 meses de movimentação, para isso vou precisar passar por 6 tabelas de vendas, levando em consideração a data de hoje para trás. Pensei em criar algumas variaves em que consigo extrair o mês e ano desses 6 meses.
Ex:
vMes1 = Month(Today());
vMes2 = Month(Today()-30);
vMes3 = Month(Today()-60);
vMes4 = Month(Today()-90);
vMes5 = Month(Today()-180);
vAno1 = Year(Today());
vAno2 = Year(Today()-30);
vAno3 = Year(Today()-60);
vAno4 = Year(Today()-90);
vAno5 = Year(Today()-180);
agora gostaria de utilizar essas minhas variáveis no meu select para extrair as informações do bando de dados
Ex:
LOAD
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM concat(movprodd,'$(vMes1)','$(vAno1)');
a ideia era fazer isso com todos os 6 meses, mas dessa forma não está dando certo.
Alguém saberia me informar qual é a forma correta de fazer isso?
Não deu certo dessa forma! Consegui resolver o problema do seguinte modo:
//Data 1 mês antes da Atual.
LET vMesAno1 = Date(Addmonths(Today(),-0),'MMYY');
//Data 2 meses antes da Atual.
LET vMesAno2 = Date(Addmonths(Today(),-1),'MMYY');
mov_produtos:
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM "public"."movprodd$(vMesAno1)";
Concatenate
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM "public"."movprodd$(vMesAno2)";
Olá, Concat é para transformar uma lista de valores em um Array.
Para esse seu caso, basta colocar as variáveis diretamente no SQL.
LOAD
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM '$(vMes1)$(vAno1)';
Don't worry, be Qlik.
Tonial.
Não deu certo dessa forma! Consegui resolver o problema do seguinte modo:
//Data 1 mês antes da Atual.
LET vMesAno1 = Date(Addmonths(Today(),-0),'MMYY');
//Data 2 meses antes da Atual.
LET vMesAno2 = Date(Addmonths(Today(),-1),'MMYY');
mov_produtos:
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM "public"."movprodd$(vMesAno1)";
Concatenate
Date(mprd_datamvto) as [data_mvto],
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor;
SELECT mprd_datamvto,
mprd_unid_codigo,
mprd_prod_codigo,
mprd_qtde,
mprd_valor
FROM "public"."movprodd$(vMesAno2)";
Ok.
Você fez a mesma coisa, apenas colocou o nome correto da tabela.
É melhor você fazer um laço de repetição para ler esses dados. Senão terá que fazer manutenção no código todos os meses.
Don't worry, be Qlik.
Tonial.