Проблема заключается в том, что вы присоединяетесь к таблицам, что даст вам две строки в результатах, а затем вы суммируете значения с sum(t_join.advenced_amount) sum_init_amount
, что дает вдвое большее значение, которое вы хотите. Это быстрое и неприятное исправление:
SELECT
sum(t_join.treatment_fees_difference) if_treatment_fees_check_division,
MIN(t_join.advenced_amount) sum_init_amount ,
sum(t_join.treatment_fees_difference) + sum(t_join.advenced_amount) test,
COUNT(*) "count"
FROM
(
SELECT t_a.treatment_fees_difference , IFNULL(t_b.advenced_amount,0 ) AS advenced_amount
FROM hospital_payment_data t_a LEFT OUTER JOIN advenced_payment t_b on t_a.chart_num = t_b.chart_num
WHERE t_a.treatment_fees_check_division = 'test'
) t_join
Но это, вероятно, не удастся в реальном приложении. Попробуйте это так (не проверено):
SELECT
if_treatment_fees_check_division,
advenced_amount AS sum_init_amount ,
if_treatment_fees_check_division + advenced_amount AS test,
row_count AS "count"
FROM
(
SELECT
SUM(treatment_fees_difference) as if_treatment_fees_check_division,
count(*) as row_count,
chart_num
FROM hospital_payment_data
WHERE treatment_fees_check_division = 'test'
GROUP BY chart_num
) as TABLE1
LEFT OUTER JOIN advenced_payment AS TABLE2
ON TABLE1.chart_num = TABLE2.chart_num