SELECT DISTINCT
c.id AS contract_id,
c.number,
cp.payment_term,
cph.pens_product_id,
pt.max_term_to AS pl_max_payment_term
FROM ourpension.contract c
LEFT JOIN ourpension.contract_params cp
ON cp.contract_id = c.id
JOIN ourpension.contract_product_history cph
ON cph.contract_id = c.id
AND CURRENT_TIMESTAMP BETWEEN
cph.begin_date
AND COALESCE(cph.end_date, 'infinity')
JOIN prod_line.pens_product_param_pl p_term
ON p_term.pens_product_id = cph.pens_product_id
JOIN prod_line.param_pl def_term
ON def_term.id = p_term.param_pl_id
JOIN prod_line.table_param_pl_payment_term pt
ON pt.pens_product_param_pl_id = p_term.id
WHERE cp.payment_term IS NULL
AND def_term.brief = 'СрокВыплаты'
AND pt.max_term_to IS NOT NULL
AND (
pt.app_date_from IS NULL
OR c.date >= pt.app_date_from
)
AND (
pt.app_date_to IS NULL
OR c.date <= pt.app_date_to
)
ORDER BY c.id DESC
LIMIT 20;