我有一张“发票明细”表,我想获取商品# 的 net_sales
,这可以通过从返回中减去销售额来实现。
问题是:我可以通过获取 type
= 'S' 的 SUM(qty
) 和 SUM(qty
) 的 type
= 'R' 然后减去它们以获得 item# 的 net_sales?还有,如果有不止一个项目#需要获得 net_sales?
+------+------+------+
| Item | Qty | Type |
+------+------+------+
| 1132 | 1 | S |
| 1132 | 2 | S |
| 1132 | 3 | R |
+------+------+------+
我所做的是在查询中选择第一组“S”,然后在另一个查询中选择第二组“R”,然后减去它们,如果要处理的项目#很多,这会导致性能不足!
最佳答案
如果您以不同的方式表述问题,这将变得容易:不是 SUM()
计算所有 S
,然后减去所有 R
你也可以计算所有项目的总和,R
是负数的标记:
SELECT
`Item`,
SUM(IF(`Type`='S', `Qty`, -1*`Qty`)) AS total
FROM
`invoice_details`
WHERE
-- your criteria here, e.g.
`Item`=1132
GROUP BY `Item`
关于MySQL查询减去两组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634019/