@@ -11,6 +11,9 @@ CHANGELOG
11
11
- 2024-10-08
12
12
- reworked CTEs to provide details about last library appointment only
13
13
- move > 2019 filtering to HR_PERSON_EMPLOYEE in ordered_lib_appt MIT_IDs
14
+ - 2025-02-05 Remove 2019-01-01 date cutoff entirely
15
+ - 2025-02-05 Add CTE 'last_appt_termination_txn' to ensure only the last termination
16
+ reason is included to avoid duplicating employee rows
14
17
*/
15
18
16
19
-- get all library appointments for employee, ordered
@@ -26,7 +29,6 @@ with ordered_lib_appt as (
26
29
order by APPT_BEGIN_DATE desc , APPT_END_DATE desc
27
30
) as appt_row_num
28
31
from HR_APPOINTMENT_DETAIL
29
- where APPT_END_DATE >= TO_DATE(' 2019-01-01' , ' YYYY-MM-DD' )
30
32
),
31
33
-- select only the last / current appointment for employee
32
34
last_lib_appt as (
@@ -40,19 +42,27 @@ appt_termination_txns as (
40
42
ad .MIT_ID ,
41
43
ad .HR_POSITION_KEY ,
42
44
at .HR_PERSONNEL_ACTION ,
43
- at .HR_ACTION_REASON as TERMINATION_REASON
45
+ at .HR_ACTION_REASON as TERMINATION_REASON,
46
+ row_number() over (
47
+ partition by MIT_ID
48
+ order by APPT_BEGIN_DATE desc , APPT_END_DATE desc
49
+ ) as termination_txn_row_num
44
50
from HR_APPT_ACTION_DETAIL ad
45
51
left join HR_PERSONNEL_ACTION_TYPE at on at .HR_PERSONNEL_ACTION_TYPE_KEY = ad .HR_PERSONNEL_ACTION_TYPE_KEY
46
52
where at .HR_PERSONNEL_ACTION in (' Retirement' ,' Termination' )
47
53
),
54
+ last_appt_termination_txn as (
55
+ select * from appt_termination_txns
56
+ where termination_txn_row_num = 1
57
+ ),
48
58
-- combine CTEs above to get last / current appointment end date and termination reason
49
59
last_lib_appt_details as (
50
60
select
51
61
lla .MIT_ID ,
52
62
lla .APPT_END_DATE as LAST_LIB_APPT_END_DATE,
53
63
att .TERMINATION_REASON
54
64
from last_lib_appt lla
55
- left join appt_termination_txns att on (
65
+ left join last_appt_termination_txn att on (
56
66
att .MIT_ID = lla .MIT_ID
57
67
and att .HR_POSITION_KEY = lla .HR_POSITION_KEY
58
68
)
0 commit comments