Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
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))