私はクライアントのプロジェクトに取り組んでおり、これらの金額のステータスが「クリア済み」と記載されている 3 つの異なるテーブルの 3 つの異なる列の合計が必要です。
3 つのテーブルは次のとおりです (例として)。
支払い1
ID | Amount | Status
1 | 200 | Cleared
支払い2
ID | Amount | Status
1 | 100 | Cleared
支払い3
ID | Amount | Status
1 | 300 | Cleared
基本的に達成したいことを行う次のコードを思いつきましたが、処理される値は3倍になります(複数のテーブルから値を追加する場合)。
SELECT SUM(CASE WHEN P1.`Status` = "Cleared" THEN P1.Amount ELSE 0 END)
+ SUM(CASE WHEN P2.`Status` = "Cleared" THEN P2.Amount ELSE 0 END)
+ SUM(CASE WHEN P3.`Status` = "Cleared" THEN P3.Amount ELSE 0 END) AS ClearedFunds
FROM PAYMENT1 As P1,
PAYMENT2 As P2,
PAYMENT3 As P3 ;
上記のクエリは、(与えられた例から) 600 の期待される結果ではなく、1800 を返します。
誰が何が問題なのかを知ることができますか?