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: 
Not applicable

How to get all months that fall between two dates.

How to get all months that fall between two date/Month.

For eg. in below screen shot EMP Id =1, is associated with two month 1 (Jan) and 6 (June).

Desired Output should be like :

   

TEST2.EmpIdTEST2.Month1TEST2.Monttname_final
11Jan
12Feb
13Mar
14April
15May
16Jun
24Apr
32Feb
33March
34April
35May

Below is the code i have used so far, but stuck with the month range part.Kinldy help

MonthDetails:

LOAD * INLINE [

    Month, MonthName

    1, Jan

    2, Feb

    3, Mar

    4, Apr

    5, May

    6, Jun

    7, Jul

    8, Aug

    9, Sep

    10, Oct

    11, Nov

    12, Dec

];

MLoad:

Mapping Load Month,MonthName Resident MonthDetails;

TEST:

LOAD *,SubField(WDate,'/',2) as 'Month1',

ApplyMap('MLoad',SubField(WDate,'/',2)) as Monttname_final

INLINE [

    Emp Id, Dept, WDate

    1, Admin, 1/1

    1, Store, 3/6

    2, HR, 2/4

    3, Infra, 15/2

    3, Store, 5/5

];

4 Replies
daveamz
Partner - Creator III
Partner - Creator III

Hi Niket,

Try the WHILE cause, something like:

T1:
LOAD * INLINE [
Emp Id, Month#, Month
1,1,Jan
1,6,Jun
2,4,Apr
3,2,Feb
3,5,May
];

T2:
LOAD [Emp Id],
      Min(Month#) AS MinMonth#,
      Max(Month#) AS MaxMonth#
RESIDENT T1
GROUP BY [Emp Id]
;

DROP TABLE T1;

T3:
LOAD [Emp Id],
      MinMonth#+IterNo()-1 AS Month#
RESIDENT T2
WHILE MinMonth#+IterNo()-1

Regards,

David

Kushal_Chawda

try this

TEST:

LOAD *,SubField(WDate,'/',2) as MonthNum1

INLINE [

    Emp Id, Dept, WDate

    1, Admin, 1/1

    1, Store, 3/6

    2, HR, 2/4

    3, Infra, 15/2

    3, Store, 5/5 ];

   

Link1:

LOAD [Emp Id],

            min(MonthNum1) as MinMonthNum,

            max(MonthNum1) as MaxMonthNum

Resident TEST

Group by [Emp Id];

Link:

LOAD  *,

          MinMonthNum+IterNo()-1 as MonthNum,

          month(makedate(Year(Today()), MinMonthNum+IterNo()-1,1)) as MonthName

Resident Link1

While MinMonthNum+IterNo()-1<=MaxMonthNum;

DROP Table Link1;

DROP Fields MinMonthNum,MaxMonthNum,MonthNum1;


Not applicable
Author

Thanks Kushal, this is what I exactly looking for..Cheers!!!

Kushal_Chawda

no problem bro.