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

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
mohan_1105
Partner - Creator III
Partner - Creator III

How to write set analysis using Addmonth() ?

Hi,

I wanted to calculate the # of transaction from one month before the particular date and one month after the particular date irrespective of year. To explain it well, Let the particular date be 14-May-1995. You have a transaction data, I need to find whether the customer had any transaction in date between 14-Apr to 14-Jun in all year.

I followed this thread, Using date ranges in set analysis and taken some Inputs. In a straight table, I wrote the set analysis as follows,

count({$<[Bill.DDMM] = {">=(Date(addmonths(max([DOB]), -1), 'DD-MM'))<=(Date(addmonths(max([DOB]), 1), 'DD-MM'))"}>} distinct Year(BillDate)) it doesn't worked.

To check my Date field, I wrote the if condition as follows,

if([Bill.DDMM] > Date(addmonths(max([DOB]), -1), 'DD-MM') and [Bill.DDMM] < Date(addmonths(max([DOB]), 1), 'DD-MM'),1,0) it works fine. I came to know that there is something wrong with my set analysis. It taking my time to rectify the problem. Please help !!


Thanks in Advance!!


Mohan

1 Solution

Accepted Solutions
sunny_talwar

Try this

Count(DISTINCT Aggr(If(SetDateYear(BillDate, Today()) >= AddMonths(SetDateYear(DOB, Today()), -1) and SetDateYear(BillDate, Today()) <= AddMonths(SetDateYear(DOB, Today()), 1), Year(BillDate)), CustomerCode, BillDate, DOB))

Capture.PNG

View solution in original post

12 Replies
sunny_talwar

May be try this

Count({$<[Bill.DDMM] = {">=$(=Date(AddMonths(Max([DOB]), -1), 'DD-MM'))<=$(=Date(AddMonths(Max([DOB]), 1), 'DD-MM'))"}>} DISTINCT Year(BillDate))

kaushiknsolanki
Partner Ambassador/MVP
Partner Ambassador/MVP

Try this.

count({$<[Bill.DDMM] = {">=$(=Date(addmonths(max([DOB]), -1), 'DD-MM'))<=$(=Date(addmonths(max([DOB]), 1), 'DD-MM'))"}>} distinct Year(BillDate))


Regards,

Kaushik Solanki

Please remember to hit the 'Like' button and for helpful answers and resolutions, click on the 'Accept As Solution' button. Cheers!
mohan_1105
Partner - Creator III
Partner - Creator III
Author

Hi Sunny & Kaushik,

I even tried it before it doesn't work. I just added the sample file.

Thank,

Mohan

sunny_talwar

What is the expected output and in what type of object?

mohan_1105
Partner - Creator III
Partner - Creator III
Author

Hi sunny,

I am doing it in the straight table. Expected is straight forward in my expression which I wrote in question. To be more clear, To calculate How many years he purchased with me near to his DOB date.

Thanks!!

sunny_talwar

I was hoping to see a numeric form of output and not expressional form of output

mohan_1105
Partner - Creator III
Partner - Creator III
Author

Hi Sunny,

Expected table as follows,

Capture.JPG

Also please take a look at the Excel file attached with this reply.

I hope you can understand what I am looking after. Need help !!

sunny_talwar

Try this

Count(DISTINCT Aggr(If(SetDateYear(BillDate, Today()) >= AddMonths(SetDateYear(DOB, Today()), -1) and SetDateYear(BillDate, Today()) <= AddMonths(SetDateYear(DOB, Today()), 1), Year(BillDate)), CustomerCode, BillDate, DOB))

Capture.PNG

sunny_talwar

Or this

Count(DISTINCT Aggr(If(SetDateYear(BillDate, Today()) >= AddMonths(SetDateYear(DOB, Today()), -1) and SetDateYear(BillDate, Today()) <= AddMonths(SetDateYear(DOB, Today()), 1), Year(BillDate)), CustomerCode, BillDate))