Je pense que c'est ce que vous recherchez. Faites-moi savoir si vous avez besoin d'autre chose. Vous devriez probablement avoir chart_num dans credit_card afin que vous puissiez joindre les tables ensemble.
Select hpd.chart_num,
hpd.chart_name
hpd.visit,
hpd.card_amount_received,
cc.card_date,
CASE WHEN hpd.card_amount_received = SUM(cc.advenced_amount) THEN hpd.card_amount_received ELSE NULL END AS ‘amount’,
CASE WHEN hpd.card_amount_received > SUM(cc.advenced_amount) THEN ‘error’ ELSE ‘ok’ END AS ‘result’
from hospital_payment_data hpd
LEFT JOIN credit_card ON cc.chart_num=hpd.chart_num AND
date(cc.card_date) = date(hpd.visit)
GROUP BY hpd.chart_num, hpd.visit;
Ce serait probablement une bonne idée d'avoir une table client_visit au cas où un client vient au bureau deux fois par jour ou met en place un plan de paiement où il ne paie pas le jour où il vient au bureau.