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


select 
    m_nv.year,
    coalesce(sum_by_year.value, 0) as sum_income,
    m_nv.max_tax_deduction
from ourpension.max_year_tax_deduction m_nv
left join (
    select 
        date_part('year', t.period_date) as y,
        sum(t.amount) as value
    from ourpension.contract c
    join ourpension.sharer sh on c.id = sh.contract_id
    join mgr.ft_dwh_get_pension_account_operation(...) t
    where sh.id = :sharer_id
    and case 
        when c.service_type = 'NPO' then t.operation_type_name in ('Ч/з банк', 'От работодателя')
        when c.service_type = 'PDS' then t.operation_type_name = 'Сберегательные взносы'
        else false 
    end
    group by y
) sum_by_year on sum_by_year.y = m_nv.year
where m_nv.year >= (
    select cast(date_part('year', c.date) as integer)
    from ourpension.contract c
    join ourpension.sharer sh on c.id = sh.contract_id
    where sh.id = :sharer_id
)
order by m_nv.year