select
c.id as contract_id,
c.date as contract_date,
c.pension_rule_id as current_rule_id,
pr_current.edition_number as current_rule,
hist.period as history_period,
hist.pension_rule_id as history_rule_id,
pr_hist.edition_number as history_rule
from ourpension.contract c
left join lateral (
select
h.period,
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
) hist on true
left join ourpension.pension_rule pr_current
on pr_current.id = c.pension_rule_id
left join ourpension.pension_rule pr_hist
on pr_hist.id = hist.pension_rule_id
where c.service_type in ('NPO', 'PDS')
and hist.pension_rule_id is not null
and hist.pension_rule_id is distinct from c.pension_rule_id
limit 50;