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

Atualizar Campo

Boa Tarde.

Pessoal gostaria de saber como posso fazer para alimentar um unico campo com valores diferentes.

Tenho algumas datas no campo chData onde eu quero trazer a data final de cada mês mais a maior data do

mês vigente.

exemplo.

Tab1:

load chData from arquivo.qvd;

Datas:

load   chData resident tab1 where chData = date#(monthEnd(chData)) and chData = date(max(chData));

Porém o Qlikview acusa erro de expressão por causa do date(max(chData)) e ate o momento não encontrei um solução para fazer isso..

Labels (1)
1 Solution

Accepted Solutions
Not applicable
Author

Alessandro,

Eu consegui fazer desta forma abaixo mas acredito que talvez não seja a melhor.

/*Aqui está tudo certo*/

DATA:

LOAD

     ChaveData,

     Codigo,

     Nome

FROM ARQUIVO.QVD WHERE ChaveData = Date#(MonthEnd(ChaveData)) or (ChaveData >= Date#(MonthStart(Today())) and ChaveData <= Date#(MonthEnd(Today())))

/*isso foi que eu fiz para resolver o problema em questão

GRAFICO_1:

LOAD  ChaveData as ChaveGrafico

     resident DATA where ChaveData = date#(MonthEnd(ChaveData));

LOAD  date(max(ChaveData)) as ChaveGrafico

     resident DATA;

Depois deste código tenho receio que de algum problema, pois como informei os dados que tenho no campo ChaveData são:

30/11/14

31/12/14

01/01/15

02/01/15

03/01/15

e na tabela GRAFICO_1 ta vindo correto pq o ultimo registro é 03/05/15.  Queria descobrir uma outra maneira de criar essa tabela com os dados 30/11/14 31/12/14 03/01/15 para que não haja problema.

View solution in original post

4 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Boa tarde Luiz.

O erro se deve ao fato que você esta usando o MAX sem o group by.

Sobre o que você precisa, eu precisaria de algum exemplo. Pois para trazer a maior data do mês daria para usar o monthend ou se for para pegar a maior data do mês, usar o max com group by Ano,MES por exemplo.

AMF

furtado@farolbi.com.br
Not applicable
Author

Alessandro,

Eu consegui fazer desta forma abaixo mas acredito que talvez não seja a melhor.

/*Aqui está tudo certo*/

DATA:

LOAD

     ChaveData,

     Codigo,

     Nome

FROM ARQUIVO.QVD WHERE ChaveData = Date#(MonthEnd(ChaveData)) or (ChaveData >= Date#(MonthStart(Today())) and ChaveData <= Date#(MonthEnd(Today())))

/*isso foi que eu fiz para resolver o problema em questão

GRAFICO_1:

LOAD  ChaveData as ChaveGrafico

     resident DATA where ChaveData = date#(MonthEnd(ChaveData));

LOAD  date(max(ChaveData)) as ChaveGrafico

     resident DATA;

Depois deste código tenho receio que de algum problema, pois como informei os dados que tenho no campo ChaveData são:

30/11/14

31/12/14

01/01/15

02/01/15

03/01/15

e na tabela GRAFICO_1 ta vindo correto pq o ultimo registro é 03/05/15.  Queria descobrir uma outra maneira de criar essa tabela com os dados 30/11/14 31/12/14 03/01/15 para que não haja problema.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Luiz,

este exemplo faz o que voce comentou.

Calendario:

LOAD

    Data

Where Data_Final_Mes = 1 or Data = Today();

LOAD

   Data,

   if(floor(Data) = floor(MonthEnd(Data)) and Data <= Today(),1,0)       as Data_Final_Mes;

load

  date(yearstart(addmonths(Today(),-3)) + RecNo()) as Data

AutoGenerate 1100;

furtado@farolbi.com.br
Not applicable
Author

Certo.

Obrigado Alessandro.