![](/img/trans.png)
[英]MYSQL Select 5 records from one table based on several different values from another
[英]Substract several values from one table to another value in a different table
您好,我想在表格发票中添加一个名为利润的列。 我想确切地获得红色的值。 该值是使用表loadNumber作为ID减去表发票amountUsd列MINUS表carrierPayments amountUsd列的值。 如果我使用以下查询在每张发票中有一个carrierPayments,则可以使用。
SELECT i.*, i.amountUsd - cp.amountUsd AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber
但是,如果我有多个loadPayment具有与橙色背景相同的loadNumber,该怎么办。 可以将一个以上的承运人减为一张发票吗?
您可以使用join
和group by
:
select i.*,
(i.amountUSD - coalesce(p.amountUSD, 0)) as profit
from invoice i left join
(select p.loadNumber, sum(p.amountUSD) as amountUSD
from carrierPayments p
group by p.loadNumber
) p
on p.loadNumber = i.loadNumber;
SELECT i.*, i.amountUsd - sum(cp.amountUsd) AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber group by cp.loadNumber
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.