Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Dears,
I want to calculate Active Employees by Month. In our organization every month new employees are joining and leaving. I need to know aur active employee count each month.
I have the count of Active employees but this count shows as of now. How can I distribute in months.
Kindly check the sample data.
We have 2 tables Employee Table and Termination Table : When an employee is terminated, its record from Employee table is deleted and it is saved in Termination Table.
Emp Table:
| Emp Id | Name | Date of Join | Status | 
| 001 | EMP1 | 01-Jan-2024 | Active | 
| 002 | EMP2 | 05-Jan-2024 | Active | 
| 004 | EMP4 | 10-Feb-2024 | Active | 
| 006 | EMP6 | 11-Mar-2024 | Active | 
| 007 | EMP7 | 30-Apr-2024 | Active | 
| 008 | EMP8 | 15-May-2024 | Active | 
| 009 | EMP9 | 18-May-2024 | Active | 
| 010 | EMP10 | 23-May-2024 | Active | 
| 011 | EMP11 | 01-Jun-2024 | Active | 
Termination Table:
| Emp Id | Name | Join Date | Termination Date | 
| 003 | EMP3 | 10-Jan-2024 | 20-Feb-2024 | 
| 005 | EMP5 | 05-Feb-2024 | 05-Mar-2024 | 
Result Needed:
| Month | Count of Employees | 
| Jan | 3 (EMP1,EMP2,EMP3) | 
| Feb | 4 (EMP1,EMP,2,EMP4,EMP5) | 
| Mar | 4 (EMP1, EMP2,EMP4,EMP6) | 
| Apr | 5 (EMP1, EMP2,EMP4,EMP6,EMP7) | 
| May | 8 (EMP1, EMP2,EMP4,EMP6,EMP7,EMP8,EMP9,EMP10) | 
| Jun | 9 (EMP1, EMP2,EMP4,EMP6,EMP7,EMP8,EMP9,EMP10,EMP11) | 
Let me know the solutions.
Regards
Shahzad
You can solve this using intervalmatch(), please review my sample script below using your sample data.
.
SET DateFormat='DD-MMM-YYYY';
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
Periods_of_interest:
LOAD 
	Date, 
	Monthname(Date) as Year_Month;
LOAD 
	Dayname('01-Jan-2024', recno()-1) as Date
Autogenerate ('01-Jun-2024' - '01-Jan-2024')+1;
Emp_Table:
LOAD 
	[Emp Id],
	Name,
	[Date of Join],
	Status,
	today() as last_workday
inline [
	Emp Id	Name	Date of Join	Status
	001	EMP1	01-Jan-2024	Active
	002	EMP2	05-Jan-2024	Active
	004	EMP4	10-Feb-2024	Active
	006	EMP6	11-Mar-2024	Active
	007	EMP7	30-Apr-2024	Active
	008	EMP8	15-May-2024	Active
	009	EMP9	18-May-2024	Active
	010	EMP10	23-May-2024	Active
	011	EMP11	01-Jun-2024	Active
](Delimiter is '	');
Termination_Table:
Concatenate (Emp_Table)
LOAD 
	[Emp Id],
	Name,	
	[Join Date] as [Date of Join],
	[Termination Date],
	[Termination Date] as last_workday 
inline [
	Emp Id	Name	Join Date	Termination Date
	003	EMP3	10-Jan-2024	20-Feb-2024
	005	EMP5	05-Feb-2024	05-Mar-2024
](Delimiter is '	'); 
IntervalMatch (Date)
LOAD 
	[Date of Join],
	last_workday
Resident Emp_Table;
.
This can give you an output like in the table below. (The expressions used are shown in the header of the expression columns).
You can solve this using intervalmatch(), please review my sample script below using your sample data.
.
SET DateFormat='DD-MMM-YYYY';
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
Periods_of_interest:
LOAD 
	Date, 
	Monthname(Date) as Year_Month;
LOAD 
	Dayname('01-Jan-2024', recno()-1) as Date
Autogenerate ('01-Jun-2024' - '01-Jan-2024')+1;
Emp_Table:
LOAD 
	[Emp Id],
	Name,
	[Date of Join],
	Status,
	today() as last_workday
inline [
	Emp Id	Name	Date of Join	Status
	001	EMP1	01-Jan-2024	Active
	002	EMP2	05-Jan-2024	Active
	004	EMP4	10-Feb-2024	Active
	006	EMP6	11-Mar-2024	Active
	007	EMP7	30-Apr-2024	Active
	008	EMP8	15-May-2024	Active
	009	EMP9	18-May-2024	Active
	010	EMP10	23-May-2024	Active
	011	EMP11	01-Jun-2024	Active
](Delimiter is '	');
Termination_Table:
Concatenate (Emp_Table)
LOAD 
	[Emp Id],
	Name,	
	[Join Date] as [Date of Join],
	[Termination Date],
	[Termination Date] as last_workday 
inline [
	Emp Id	Name	Join Date	Termination Date
	003	EMP3	10-Jan-2024	20-Feb-2024
	005	EMP5	05-Feb-2024	05-Mar-2024
](Delimiter is '	'); 
IntervalMatch (Date)
LOAD 
	[Date of Join],
	last_workday
Resident Emp_Table;
.
This can give you an output like in the table below. (The expressions used are shown in the header of the expression columns).
Dear @Vegar
Thanks for the solution. It is working