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


SELECT *
FROM (
    SELECT q.*,
           row_number() over (
               partition by q.document_number
               order by 
                   case when q.canceled is null then 0 else 1 end,
                   q.accepted desc nulls last,
                   q.year desc,
                   q.id desc
           ) as rn
    FROM (
        SELECT
            -- твой текущий SELECT
            td.number as document_number,
            td.year,
            td.accepted,
            td.canceled,
            td.id,
            ...
        FROM ourpension.year_tax_deduction td
        -- все твои JOIN
        WHERE td.type != 'NONE'
          AND 1=1

        #if ( ... )
            and ...
        #end

        #if ( "$!contract_number" != "" )
            and contract.number ILIKE '%' || :contract_number || '%'
        #end

        #if ( "$!client_full_name" != "" )
            and apdi.last_name || ' ' || apdi.first_name || ' ' || apdi.middle_name ILIKE '%' || :client_full_name || '%'
        #end

        -- остальные фильтры тоже тут
    ) q
) x
WHERE x.rn = 1