Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
43918084
Creator II
Creator II

Max(Date) returns invalid expression

I have a table with field

  Date(Date#("ACCTG DATE (P0045)",'yyyyMMdd'),'YYYYMMDD') as "ACCTG DATE (P0045)"

 and I want to have a field to return latest date.

I used Max("ACCTG DATE (P0045)") and get invalid expression

Hope I can get some guidance

 

 

1 Solution

Accepted Solutions
43918084
Creator II
Creator II
Author

Thank you very much Mr Agigliotti for your patience to help me many times.

I finally did an extra load and get the problem solved

 

left join
Load Max("ACCTG DATE (P0045)") as maxd
resident [LYCM];

View solution in original post

13 Replies
agigliotti
Partner - Champion
Partner - Champion

maybe this:

=Max([ACCTG DATE (P0045)]) 

I hope it can help.

43918084
Creator II
Creator II
Author

Thank you very much for your help.  Unfortunately it does not work.  I still get invalid expression

agigliotti
Partner - Champion
Partner - Champion

what is your field name?
could you post a screenshot?

43918084
Creator II
Creator II
Author

Thank you very much again.  My field name is "ACCTG DATE (P0045)".  The double quote is included as field name.

 

Please find below my script which has not include the Max formula:-

Load
Distinct "GLOBAL TRADE NUM (P0221)",
"ACCTG DATE (P0045)",

"MATURITY DATE (P0288)",
"TRADE DATE (P0561)",


Rowno()-1 as row,
recno() as current,
Peek('GLOBAL TRADE NUM (P0221)') as PrevDeal,
peek('ACCTG DATE (P0045)') as PreAcctgdate,
if(Peek('GLOBAL TRADE NUM (P0221)') = "GLOBAL TRADE NUM (P0221)",'y','n') as check1,

if(Peek('ACCTG DATE (P0045)')=date(date#('20191231','yyyyMMdd'),'yyyyMMdd'),2,1)as check2,
if(Peek('GLOBAL TRADE NUM (P0221)') = "GLOBAL TRADE NUM (P0221)" and Peek('ACCTG DATE (P0045)')=date(date#('20191231','yyyyMMdd'),'yyyyMMdd'),'exist',
if(Peek('GLOBAL TRADE NUM (P0221)') <> "GLOBAL TRADE NUM (P0221)" and Peek('ACCTG DATE (P0045)')=date(date#('20191231','yyyyMMdd'),'yyyyMMdd'), 'old',
if(Peek('GLOBAL TRADE NUM (P0221)') <> "GLOBAL TRADE NUM (P0221)"and Peek('ACCTG DATE (P0045)')<>date(date#('20191231','yyyyMMdd'),'yyyyMMdd'), 'new', 2)))as check3


 

 RESIDENT [LYCM]
 order by "GLOBAL TRADE NUM (P0221)","ACCTG DATE (P0045)" ;
 
Drop Table [LYCM];

Mauritz_SA
Partner - Specialist
Partner - Specialist

Hi @43918084 

Change yyyyMMdd to YYYYMMDD in your script.

Regards,

Mauritz

43918084
Creator II
Creator II
Author

Thank you very much for your advice.  I have replaced all yyyyMMdd to YYYYMMDD. But I still get the invalid expression.

 

May I know if max("ACCTG DATE (P0045)") is the correct syntax?  The double quote is in the original field

Mauritz_SA
Partner - Specialist
Partner - Specialist

Hi @43918084 

Sorry, I didn't see your response. As far as I know max("ACCTG DATE (P0045)") is the same as max([ACCTG DATE (P0045)]) so both will work. Can you paste a sample ACCTG DATE (P0045) value so that we can see its format?

Regards,

Mauritz

43918084
Creator II
Creator II
Author

Thank you very much indeed.

Please find below a sample of the data.  I really appreciate your help

GLOBAL TRADE NUM (P0221)ACCTG DATE (P0045)
503232H20191231
503232H20200131
503237H20191231
503237H20200131
960509H20191231
960509H20200131
1096601H20200131
1096602H20191231

 

agigliotti
Partner - Champion
Partner - Champion

in script:

load
date#([ACCTG DATE (P0045)], 'YYYYMMDD') as [ACCTG DATE (P0045)];
LOAD * INLINE [
GLOBAL TRADE NUM (P0221), ACCTG DATE (P0045)
503232H, 20200131
503237H, 20191231
503237H, 20200131
960509H, 20191231
960509H, 20200131
1096601H, 20200131
1096602H, 20191231
];

in UI:

=max([ACCTG DATE (P0045)])