この質問は私の以前の投稿に関連しています:MySQL-クエリ内の複雑なSUM
クエリはうまく機能しており、必要に応じて合計を合計しています。NULL値のレコードもすべて無視されることに気付きました。
現在のクエリ:
SELECT c.*,
SUM(CASE WHEN billtype = 1 THEN total ELSE 0 END) totalpaid ,
SUM(CASE WHEN billtype = 2 THEN total ELSE 0 END) totalowed ,
SUM(total) AS totalbalance
FROM
tbl_customers c
LEFT JOIN tbl_customers_bills b
ON c.customerid = = b.customerid
and billtype in (1,2)
GROUP BY
c.customerid
そしてそれは美しく10の顧客記録を返します。データベースを確認すると、 11tbl_customers_bills
の顧客レコードが表示され、11番目のレコードにはテーブル内に相関するレコードがありません。
tbl_customers_bills
テーブルに存在しないレコードがある場合でも、11個すべてを返したいのですが。(ただし、もちろんゼロを使用します)
私はそのような状態がどれほど複雑になる可能性があるかで立ち往生しています。これが私が試したことです:(役に立たない)
SELECT c.*,
(CASE WHEN (total IS NULL) THEN totalpaid = 0
ELSE
SUM(CASE WHEN billtype = 1 THEN total ELSE 0 END) totalpaid ,
SUM(CASE WHEN billtype = 2 THEN total ELSE 0 END) totalowed ,
SUM(total) AS totalbalance
END)
FROM
tbl_customers c
LEFT JOIN tbl_customers_bills b
ON c.customerid = = b.customerid
and billtype in (1,2)
GROUP BY
c.customerid