这是我正在做的一个小项目。我正在尝试编写一个可以在下表中执行此操作的查询
ID,Name,Pledge_Amount,Pledge_payment_amt,Gift_No,Pledge_Gift_No,Pledge_Open / Closed
ID不是唯一的。因此,一个人会承诺一些钱(Pledge_Amount),会支付全部或部分资金(Pledge_payment_amt),并且有相同的多个记录。 Gift_no对于相同的承诺/礼物将是相同的,并且每当该人决定捐赠时将与Pledge_Gift_No匹配。只有当礼物已经完全还清时,状态才会改变。
1,Alex,20,10,G1,NULL,Open
1,Alex,NULL,10,NULL,G1,已关闭
查询是:
找到具有优秀礼品金额的人并将其状态更改为打开/关闭
到目前为止,我已经能够做到这一点:
select *
from Test_Table2 S inner join Test_Table2 F
on S.Gift_No = F.Pledge_gift_No
WHERE S.ID = F.ID;
任何关于如何处理其余查询的指针都将非常感激。
答案 0 :(得分:2)
这样的东西?
SELECT S.*, SUM(Pledge_payment_amt) AS pledged
FROM Test_table2 AS recipients
LEFT JOIN Test_table2 AS pledgers
ON recipients.Gift_no = pledgers.Pledge_gift_no
GROUP BY S.Gift_No
HAVING S.Pledge_Amount > pledged
这将返回所有" recpients"其所需的承诺金额大于已经承诺的金额 - 例如他们还没有达到他们的承诺目标。