Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
Saif1
Partner - Creator
Partner - Creator

Get Department by max end date but the same year

Hello i have the following data: 

Comp_key person_ID emp_num name StartDate EndDate EmploymentYear Department
102019 10 1 A 05/09/2019 06/10/2020 2019 HR
102020 10 1 A 05/09/2019 06/10/2020 2020 HR
102020 10 1 A 07/10/2020 31/12/4102 2020 Training
102021 10 1 A 07/10/2020 31/12/4102 2021 Training
102022 10 1 A 07/10/2020 31/12/4102 2022 Training
202020 20 2 B 07/08/2020 05/09/2021 2020 HR
202020 20 2 B 07/08/2020 05/09/2021 2021 HR
202021 20 2 B 06/09/2021 07/09/2022 2021 Training
202021 20 2 B 06/09/2021 07/09/2022 2022 Training
202022 20 2 B 08/09/2022 31/12/2022 2022 Procurement

 

Comp_key  = PersonID&EmploymentYear

as we can see in employee B he was in 2 departments in 2022 so i want to make a table with (max enddate of that year) and gives me that department table i want :

102019 10 1 A 05/09/2019 06/10/2020 2019 HR
102020 10 1 A 07/10/2020 31/12/4102 2020 Training
102021 10 1 A 07/10/2020 31/12/4102 2021 Training
102022 10 1 A 07/10/2020 31/12/4102 2022 Training
202020 20 2 B 07/08/2020 05/09/2021 2020 HR
202021 20 2 B 06/09/2021 07/09/2022 2021 Training
202022 20 2 B 08/09/2022 31/12/2022 2022 Procurement

 

what i have tried

 

Table2 :

load

Compkey,

Department as dept,

max(enddate) as maxenddate

resident Emp group by compkey,dept;

 

this doesnt give me my desired result 

any help ?

thanks

Labels (1)
7 Replies
BrunPierre
Partner - Master
Partner - Master

Hi, Try this

Table2:
LOAD Comp_key,
MaxString(Department) as dept,
Date(Max(EndDate)) as maxenddate

Resident Emp
Group By Comp_key;

Saif1
Partner - Creator
Partner - Creator
Author

saldy it returned wrong department per year

any other solutions? or maybe group by other things?

BrunPierre
Partner - Master
Partner - Master

NoConcatenate
Table2:
LOAD Comp_key,
     person_ID,
     emp_num,
     name,
     Date(Max(EndDate)) as EndDate,
     Date(Max(StartDate)) as StartDate,
     Min(EmploymentYear) as EmploymentYear,
     MaxString(Department) as Department

Resident Emp  
Group By Comp_key,person_ID,emp_num,name;

DROP Table Temp;

BrunPierre_0-1669032939949.png

Saif1
Partner - Creator
Partner - Creator
Author

your script is working , but it gives not the max department in the same year , lets imagine that Training department was in 2022 and procurment in 2022, your script is giving Training on all 2022, my goal is to make procurment for all 2022.

BrunPierre
Partner - Master
Partner - Master

@Saif1 The results of the script matches what you shared. Has your requirement changed?

Elaborate more by sharing what exactly is expected.

Saif1
Partner - Creator
Partner - Creator
Author

what worked for me is to autonumber via the year and employee number and the department 

then getting the row number 1 as the highest in end year

Saif1
Partner - Creator
Partner - Creator
Author

anyways thank you for your help