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