表1 = 项目 表2=销售额
SELECT items.itemcode, items.itemname,
sum(items.totalnoofpcs)-ifnull(sum(sales.qty), 0)as sold
FROM items
LEFT JOIN Sales ON items.itemcode = Sales.itemcode
GROUP BY items.itemcode, items.itemname.
最佳答案
这是您的查询:
SELECT i.itemcode, i.itemname,
sum(i.totalnoofpcs)-coalesce(sum(s.qty), 0)as sold
FROM items i LEFT JOIN
Sales s
ON i.itemcode = s.itemcode
GROUP BY i.itemcode, i.itemname;
据推测,items
表中的每个 itemcode
一行,因此不会影响结果。合乎逻辑的结论是 totalnoofpcs
是原因 - 它听起来不像是您希望在每次销售中添加的变量。
因此,不要使用 sum()
,而是使用 max()
或将其包含在 group by
键中:
SELECT i.itemcode, i.itemname,
(i.totalnoofpcs - coalesce(sum(s.qty), 0)) as sold
FROM items i LEFT JOIN
Sales s
ON i.itemcode = s.itemcode
GROUP BY i.itemcode, i.itemname, i.totalnoofpcs;
关于mysql 以 double 显示结果总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237503/