вы можете использовать аналитику здесь: присоедините table1 к table2, возьмите самую последнюю запись table2 для каждого элемента в table1 и убедитесь, что этот самый последний элемент имеет значение 'XXX':
SELECT *
FROM (SELECT t1.*,
t2.a_col,
row_number() over (PARTITION BY t1.pk
ORDER BY t2.date_col DESC) rnk
FROM table1 t1
JOIN table2 t2 ON t2.fk_id = t1.pk_id)
WHERE rnk = 1
AND a_col = 'XXX'
Обновление : Не изменяя SELECT верхнего уровня, вы могли бы написать запрос следующим образом:
SELECT t1.pk_id
FROM table1 t1
WHERE 'XXX' =
(SELECT a_col
FROM (SELECT a_col,
t2_in.fk_id,
row_number() over(PARTITION BY t2_in.fk_id
ORDER BY t2_in.date_col DESC) rnk
FROM table2 t2_in) t2
WHERE rnk = 1
AND t2.fk_id = t1.pk_id)
В основном вы только соединяете (SEMI-JOIN) строки из таблицы2,самые последние для каждого fk_id