SQL查询将一列与另一列进行比较

时间:2014-04-11 16:17:33

标签: mysql sql join

这是我正在做的一个小项目。我正在尝试编写一个可以在下表中执行此操作的查询

  

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;

任何关于如何处理其余查询的指针都将非常感激。

1 个答案:

答案 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"其所需的承诺金额大于已经承诺的金额 - 例如他们还没有达到他们的承诺目标。