繁体   English   中英

从一个表中减去几个值到另一个表中的另一个值

[英]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,该怎么办。 可以将一个以上的承运人减为一张发票吗?

您可以使用joingroup 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM