Tôi nghĩ đây là những gì bạn đang theo đuổi. Hãy cho tôi biết nếu bạn cần thứ gì khác. Bạn có thể nên có chart_num trong credit_card để có thể nối các bảng lại với nhau.
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;
Có lẽ sẽ là một ý tưởng hay nếu có một bảng client_visit trong trường hợp khách hàng đến văn phòng hai lần trong một ngày hoặc thiết lập kế hoạch thanh toán mà họ không thanh toán vào ngày họ đến văn phòng.