Здравствуйте.
Пишу след.запрос:
SELECT 
  t2.id,
  t2.id_contract_agency,
  @var1:=COALESCE(SUM(t2.accruals_heat * t3.heat + t2.accruals_water * t3.water + t2.accruals_electric_energy * t3.electric_energy), 0) AS cost,
    @var2:=
       (SELECT SUM(t4.summ_payment)
    FROM contract_agency_payments t4
    WHERE t4.id_contract_agency = t2.id_contract_agency
    ) AS payments,
    (@var1-@var2) AS debt /*здесь проблема*/
FROM contract_agency t1
  LEFT OUTER JOIN spr_tariff t3 ON (t1.id_tariff = t3.id)
  INNER JOIN contract_agency_turnover t2 ON (t1.id = t2.id_contract_agency) AND (t1.id = t2.id_contract_agency)
GROUP BY t2.id_contract_agency
 
@var1-@var2 возвращает NULL, хотя cost и payments в результате числовые значения.
и еще, если вместо (@var1-@var2) прописать @var2, то выдает строковое значение, стоит написать @var2-0 (или+0), то значение корректное, если тоже самое проделать с @var1, то выдает NULL, без этого костыля строковое значение 
