select
c.id,
c.date,
c.pension_rule_id as contract_rule_id,
prh.pension_rule_id as history_rule_id,
pr.edition_number as pension_rules_edition
from ourpension.contract c
left join lateral (
select
h.pension_rule_id
from ourpension.npo_contract_pension_rules_history h
where h.contract_id = c.id
and h.period <= c.date
order by
h.period desc,
h.version desc
limit 1
) prh on true
left join ourpension.pension_rule pr
on pr.id = coalesce(prh.pension_rule_id, c.pension_rule_id)
where c.id = 13012647;