我正在为客户开发一个项目,需要 3 个不同表中 3 个不同列的总和,这些表的状态为“已清除”。
这三个表是(例如):
付款1
ID | Amount | Status
1 | 200 | Cleared
付款2
ID | Amount | Status
1 | 100 | Cleared
付款3
ID | Amount | Status
1 | 300 | Cleared
我提出了以下代码,它基本上完成了我想要实现的目标,但是正在处理的值被乘以三(当从多个表中添加值时)。
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 ;
上面的查询将返回(从给出的示例中):1800 而不是预期的结果 600。
谁能找出问题所在?