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


select
    to_char(o.ef_date, 'DD.MM.YYYY') as effective_date,
    ot.name,

    case
        -- Возврат выплаты уменьшает сумму выплат
        when ot.code = 'PDS_RETURN_LUMP_SUM_PAYMENT'
        then -o.value

        -- Налог и его возврат выводим только в НДФЛ
        when ot.code in (
            'PDS_NDFL_REDEMPTION_PAYMENT',
            'PDS_NDFL_LUMP_SUM_PAYMENT',
            'PDS_RETURN_NDFL_LUMP_SUM'
        )
          or coalesce(o.cred_mnemonics, '') like '%НДФЛ%'
        then null

        else o.value
    end as value,

    o.ef_date,

    case
        -- Возврат налога уменьшает НДФЛ
        when ot.code = 'PDS_RETURN_NDFL_LUMP_SUM'
        then -o.value

        -- Возврат выплаты относится к колонке «Сумма»
        when ot.code = 'PDS_RETURN_LUMP_SUM_PAYMENT'
        then null

        when ot.code in (
            'PDS_NDFL_REDEMPTION_PAYMENT',
            'PDS_NDFL_LUMP_SUM_PAYMENT'
        )
          or coalesce(o.cred_mnemonics, '') like '%НДФЛ%'
        then o.value

        else null
    end as ndfl

from operation o
join back_office.operation_type ot
    on ot.id = o.operation_type_id

where (
    o.deb_mnemonics is not null
    or ot.code in (
        'PDS_RETURN_LUMP_SUM_PAYMENT',
        'PDS_RETURN_NDFL_LUMP_SUM'
    )
)

order by o.ef_date, o.id;