By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE tbl_crps (id INT, crp INT, starts_on DATE);
INSERT INTO tbl_crps VALUES
(1, 20, '2020-02-09'),
(2, 31, '2019-06-05'),
(3, 20, '2018-01-10'),
(4, 31, '2021-07-03'),
(5, 58, '2022-01-01'),
(6, 58, '2025-02-02');
SELECT id, crp, starts_on
FROM tbl_crps
NATURAL JOIN (SELECT crp, MAX(id) id
FROM tbl_crps
WHERE starts_on < CURRENT_DATE
GROUP BY crp) x
UNION ALL
SELECT id, crp, starts_on
FROM tbl_crps
NATURAL JOIN (SELECT crp, MAX(id) id
FROM tbl_crps
GROUP BY crp
HAVING MIN(starts_on) >= CURRENT_DATE) x;
id | crp | starts_on |
---|---|---|
2 | 31 | 2019-06-05 |
3 | 20 | 2018-01-10 |
6 | 58 | 2025-02-02 |