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

Creating historical position from start/end dates

Hi all,

I have a data set that consists, essentially, of staff name, start date, end date, 1 record per person.

What I'm trying to do is create a chart that displays a historical staff count, with month as the dimension, and count of staff employed within that month as the expression.

So a staff member whose start date was 05/02/15 and end date was 16/05/15 would be counted in Feb, Mar, April, May.

Does anyone have any suggestions?

Thanks in advance.

Tom

1 Solution

Accepted Solutions
fvelascog72
Partner - Specialist
Partner - Specialist

Hi,

I think this could help:

Data:

LOAD

*,

Month(Start_Date) as "Month_Start_Date",

Month(End_Date) as "Month_End_Date"

Inline [

Staff_id, Start_Date, End_Date

1, 05/02/2015, 16/05/2015

2, 01/03/2015, 24/04/2015

];

NoConcatenate

Dates:

LOAD

  Max(End_Date) as "MaxDate",

  Min(Start_Date) as "MinDate"

Resident Data;

Let vMaxDate = Peek('MaxDate',0,'Dates');

Let vMinDate = Peek('MinDate',0,'Dates');

DROP Table Dates;

Right Join(Data)

LOAD Distinct

  Month(Date(RecNo() + $(vMinDate) - 1)) as "Month"

AutoGenerate $(vMaxDate) - $(vMinDate) + 1;

NoConcatenate

Data2:

LOAD

  *

Resident Data

Where Month >= Month(Start_Date) and Month <= Month(End_Date);

DROP Table Data;

And in the expression use: count(DISTINCT Staff_id)

View solution in original post

1 Reply
fvelascog72
Partner - Specialist
Partner - Specialist

Hi,

I think this could help:

Data:

LOAD

*,

Month(Start_Date) as "Month_Start_Date",

Month(End_Date) as "Month_End_Date"

Inline [

Staff_id, Start_Date, End_Date

1, 05/02/2015, 16/05/2015

2, 01/03/2015, 24/04/2015

];

NoConcatenate

Dates:

LOAD

  Max(End_Date) as "MaxDate",

  Min(Start_Date) as "MinDate"

Resident Data;

Let vMaxDate = Peek('MaxDate',0,'Dates');

Let vMinDate = Peek('MinDate',0,'Dates');

DROP Table Dates;

Right Join(Data)

LOAD Distinct

  Month(Date(RecNo() + $(vMinDate) - 1)) as "Month"

AutoGenerate $(vMaxDate) - $(vMinDate) + 1;

NoConcatenate

Data2:

LOAD

  *

Resident Data

Where Month >= Month(Start_Date) and Month <= Month(End_Date);

DROP Table Data;

And in the expression use: count(DISTINCT Staff_id)