我在 MySQL 中工作,我必须比较来自不同表的两列 ( Total
and ),一个称为 example ,另一个称为. 在支付表中有一个字段,在历史表中我有一个名为 的字段。PagoAbono
Historial
Pagos
Total
PagosAbono
表格Pagos
中只有一个带有 a 的“对开本”,Total
而表格Historial
中有几个带有 的重复“对开本” PagosAbono
。
我必须使用SUM(PagosAbono)
并获得一个作品集及其总数来添加所有作品集。如果表格中这些作品集的总和Historial
小于表格中相同作品集的总和Pagos
(或者它们不存在),那么我必须显示它们,因为我认为它们仍然欠我。
我有这个代码示例,但它没有给我我正在寻找的结果。
SELECT *
FROM Pagos A
INNER JOIN Historial B
ON ((SUM(B.PagosAbono) < A.Total) and (A.Folio = B.Folio))
我该怎么做?
如果我没有误解你的问题,你可以用一个子查询来解决它,也就是说,首先我们得到
Historial.PagosAbono
by的总数,Folio
这个查询是我们将Pagos
通过 a 链接的查询,LEFT JOIN
因为它可以没有记录,Historial
我想您仍然希望看到它们。您可以
Pagos
使用一个列进行查询,该列的值将是子查询的结果,以添加为对应于该付款的作品集所做的付款。此查询将返回 3 个字段:作品集、为该作品集支付的总额以及根据历史记录到目前为止为该作品集支付的金额。请注意,由于这是
abonado
一个计算/聚合列,而不是WHERE
使用HAVING
.你可以看到它在这个SQL Fiddle中工作。