【发布时间】:2019-11-07 15:40:39
【问题描述】:
您好,我正在尝试在表格发票中添加一个名为利润的列。我想准确地获得红色的值。该值是表 invoice amountUsd 列减去表 carrierPayments amountUsd 列的减法,使用列 loadNumber 作为 ID。如果我使用以下查询为每张发票有一个 carrierPayments,它就可以工作。
SELECT i.*, i.amountUsd - cp.amountUsd AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber
但是,如果我有多个具有相同 loadNumber 的运营商付款方式与橙色背景的运营商付款方式相同,该怎么办。是否可以在一张发票上减去多个运营商付款?
【问题讨论】:
-
请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);标签和明确的规范和解释。给出输入表的表格初始化代码。请合理地格式化您的代码。 PS 即使您不知道如何进一步查询它们并将它们组合到您的整体答案中,您也可以编写哪些与获得总体答案相关的查询?请参阅 How to Ask、其他 help center 链接和投票箭头鼠标悬停文本。
-
请use text, not images/links, for text--including tables & ERDs. 转述或引用其他文本。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图像中包含图例/键和说明。让您的帖子自成一体。
-
您说“在一张发票上减去多个运营商付款”--所以您似乎想减去每次装载的付款的 SUM()。
-
好的,感谢您的建议。所以最后我找到了我要找的东西。
SELECT i.id, i.loadNumber, i.amountUsd - SUM(cp.amountUsd) AS PROFIT FROM invoice i INNER JOIN carriersPayments cp ON i.loadNumber = cp.loadNumber GROUP BY i.id, i.loadNumber, i.amountUsd -
如果这不是已发布的答案之一,请考虑将其发布为其他人查找的答案。您可以接受它(经过最少的等待)或另一个最有帮助的。评论是短暂的,帖子是永久的。 PS Column id 在您的评论中,但不在您的问题中。
标签: mysql sql select inner-join