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


WITH base AS (
    SELECT
        x.id,
        x."year",
        x."type",
        x.sum_income,
        x."date",
        x.sum_tax_deduction,
        x.max_tax_deduction,
        x."number",
        x.canceled,
        x.accepted,
        x."version",

        contract.number AS contract_number,
        contract.date AS contract_date,

        coalesce(x."number", contract.number) AS certificate_group_key,

        row_number() over (
            partition by coalesce(x."number", contract.number)
            order by x."version" desc, x.id desc
        ) as rn

    FROM ourpension.year_tax_deduction x
    LEFT JOIN ourpension.application_termination_contract atc
        ON x.application_termination_contract_id = atc.id
    LEFT JOIN ourpension.application_personal_data_individual apdi
        ON apdi.id = atc.application_personal_data_individual_id
    LEFT JOIN ourpension.application_termination_contract_data atcd
        ON atcd.application_termination_contract_id = atc.id
    LEFT JOIN ourpension.sharer sh
        ON sh.id = atcd.sharer_id
    LEFT JOIN ourpension.contract contract
        ON contract.id = sh.contract_id

    WHERE x."type" != 'NONE'
      AND x."year" >= cast(to_char(contract.date, 'YYYY') as int)

      AND coalesce(:certificate_group_key, '') != ''
      AND coalesce(x."number", contract.number) = :certificate_group_key
)

SELECT
    CASE
        WHEN q.rn = 1 AND q.canceled IS NULL THEN 'Актуальная'
        ELSE 'Неактуальная'
    END AS actual,

    q."year" AS year,

    CASE q."type"
        WHEN 'NONE' THEN 'Нет справки'
        WHEN 'NOT_RECEIVED' THEN 'Вычет не получен'
        WHEN 'RECEIVED' THEN 'Вычет получен'
    END AS type,

    q.sum_income AS sum_income,
    to_char(q."date", 'DD.MM.YYYY') AS date,
    q.sum_tax_deduction AS sum_tax_deduction,
    q.max_tax_deduction AS max_tax_deduction,
    q."number" AS number,
    q.contract_number AS contract_number,

    to_char(q.accepted, 'DD.MM.YYYY HH24:MI:SS') AS accepted,
    to_char(q.canceled, 'DD.MM.YYYY HH24:MI:SS') AS canceled,

    q.id AS id,
    q.certificate_group_key AS certificate_group_key

FROM base q