Если вы используете MySQL 8+, тогда хорошим вариантом будет ROW_NUMBER
:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id, building_id
ORDER BY create_date DESC) rn
FROM yourTable
)
SELECT
report_id,
customer_id,
building_id,
create_date
FROM cte
WHERE rn = 1;
Если к последней дате создания может быть привязано более одной пары клиент / здание, и вы хотите захватить все связи, замените ROW_NUMBER
на RANK
и используйте тот же запрос.