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


WITH hist AS MATERIALIZED (
    SELECT DISTINCT ON (h.contract_id)
        h.contract_id,
        h.period,
        h.pension_rule_id
    FROM ourpension.npo_contract_pension_rules_history h
    JOIN ourpension.contract c
        ON c.id = h.contract_id
    WHERE c.service_type IN ('NPO', 'PDS')
      AND h.period <= c.date
    ORDER BY
        h.contract_id,
        h.period DESC,
        h.version DESC
)
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 hist

JOIN ourpension.contract c
    ON c.id = hist.contract_id

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 hist.pension_rule_id IS DISTINCT FROM c.pension_rule_id

LIMIT 50;