我有一张包含各种成本明细的发票表。我也有一个包含杂项费用的链接表。关系是一张发票到许多杂项费用
当我执行 SUM() 并且杂项成本表 (RIGHT) 上存在多行时,发票表 (LEFT) 中的值乘以找到的行数。
DB小提琴:https ://www.db-fiddle.com/f/9CKGRShXPoT3k4Wcm83fVD/5
LABOUR、PARTS、POLS 和 SUBLET 的原始查询结果不正确:
SELECT SUM(ad.labour_cost) AS LABOUR,
SUM(ad.part_cost) AS PARTS,
SUM(ad.pol_cost) AS POLS,
SUM(ad.sublet_cost) AS SUBLET,
SUM(am.misc_sales_amt) AS MISC
FROM AdvisorSalesData ad
LEFT JOIN AdvisorMiscSalesData am
ON (ad.customer_id=am.customer_id AND ad.invoice_no=am.invoice_no)
WHERE ad.customer_id IN (3)
调整后的查询 - 删除了 INNER JOIN 并在 misc 表上尝试了一个 SELECT,但 MISC 的结果不正确(NULL):
SELECT SUM(ad.labour_cost) AS LABOUR,
SUM(ad.part_cost) AS PARTS,
SUM(ad.pol_cost) AS POLS,
SUM(ad.sublet_cost) AS SUBLET,
(SELECT SUM(misc_sales_amt) FROM AdvisorMiscSalesData WHERE customer_id IN (3) AND invoice_no=ad.invoice_no ) AS MISC
FROM AdvisorSalesData ad
WHERE ad.customer_id IN (3)
如何调整以在一个查询中获得所有 5 列的正确结果?