【发布时间】:2018-04-14 22:00:17
【问题描述】:
我可能可以通过 PHP 代码执行以下操作,但我觉得这很可能在 MySQL 中完成,所以只是寻找帮助我查询的人。
我有一个定义客户每月付款的合同表,例如,它是每月 500 英镑。然后我有另一个名为rent 的表,其中输入了每个月的租金。每个租金都有一个状态,称为已付、未付和部分。
到目前为止,我的查询如下,我是否必须进行多个子查询,或者是他们的简单方法。
SELECT cc.property_id, cc.property_rent, r.order_total, r.order_status,
SUM(CASE WHEN r.order_status = 'Partial' THEN cc.property_rent - r.order_total ELSE 0 END) AS partial_rent_owed
FROM t_customers_contract cc JOIN
t_customers_rent r
ON cc.customer_id = r.customer_id WHERE cc.property_id = 62 AND r.transaction_type = 'rent' AND
(r.date_created BETWEEN '2017-04-05' AND '2019-04-05')
GROUP BY cc.property_id
基本上,如果租金状态是部分的,则从通常情况中减去它,然后是所欠的总和。
期望的结果将是每个财产的欠款和贡献的总和,如下输出:
property_id、total_rent_made、total_rent_owed
目前合约表结构及数据如下:
目前租金表结构及数据如下:
如您所见,order_id 20 和 27 是部分付款,根据合同为这些 ID 支付的实际付款应为 750 和 700。
【问题讨论】:
-
样本数据和期望的结果真的很有帮助。
-
嗨@GordonLinoff,让我为你安排一下。谢谢。
-
嗨@GordonLinoff 我刚刚更新了主要描述,是不是更好?