Загрузка данных


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;