add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select version();
version()
10.5.12-MariaDB
CREATE TABLE earliest_start_date (
employee_number VARCHAR(40)
, old_employee_number VARCHAR(40)
, entity_id int
, original_start_date date
);
INSERT INTO earliest_start_date VALUES
('5041', 'A0EH', 96, current_date+0)
, ('A0EH', null , 96, current_date-5)
, ('XXXX', null , 88, current_date-8)
;
WITH RECURSIVE cte (employee_number, original_no, entity_id, original_start_date, n) AS (
SELECT employee_number, employee_number, entity_id, original_start_date, 1 FROM earliest_start_date WHERE old_employee_number IS NULL UNION ALL
SELECT new_tbl.employee_number, cte.original_no, cte.entity_id, cte.original_start_date, n+1
FROM earliest_start_date new_tbl
JOIN cte
ON cte.employee_number = new_tbl.old_employee_number
)
, xrows AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY entity_id ORDER BY n DESC) AS rn
FROM cte
)
SELECT * FROM xrows WHERE rn = 1
;
employee_number original_no entity_id original_start_date n rn
XXXX XXXX 88 2021-09-02 1 1
5041 A0EH 96 2021-09-05 2 1
SELECT * FROM earliest_start_date;
employee_number old_employee_number entity_id original_start_date
5041 A0EH 96 2021-09-10
A0EH null 96 2021-09-05
XXXX null 88 2021-09-02