0
病院に支払われた請求書の回収レポートを取得したいと思います。患者が支払った前払い金額が記録されたテーブルがあります。全ての患者が前払いするわけではない。ケースを使用しているときにLEFT JOINに一致する行が見つからない場合、列は無視されます
これは、患者が事前に支払わなかった場合、行がadvance
テーブルに挿入されていない今
"SELECT SUM(
CASE
WHEN bill_type = 3 THEN b.payable_amount + w.balance
ELSE 0
END) AS 'amount'
FROM bills b
LEFT JOIN ip_patients ip on ip.id = b.ip_id
LEFT JOIN advance w on w.id = (SELECT x.id FROM advance x WHERE x.ip_id = ip.id ORDER BY x.created_at DESC LIMIT 1)
WHERE b.doctor_id = '$d->id' AND CAST(b.created_at AS DATE) >= '$date1' AND CAST(b.created_at AS DATE) <= '$date2' AND b.is_cancelled = 0 AND b.is_deleted = 0"
私が使用するクエリです。上記のクエリでは、事前に患者の行がない場合、彼の支払いは完全に無視されます(すなわち、bills
の値が合計に加算されません)。
でP.salmon @おかげで対処するIFNULLを使用することができます。働いたことはありません。 – Aneeez