MySQL查询要减去两组值

时间:2014-09-02 23:40:33

标签: mysql performance return subtraction sales

我有一张表"发票详情",我想获得net_sales项目#,这可以通过从退货中减去销售额来实现。

问题是:我可以通过获取qty =' S'的SUM(type)来进行执行此计算的查询。和qty =' R'的SUM(type)然后减去它们以获得项目#的net_sales?如果有多个项目#来获取net_sales?

+------+------+------+
| Item |  Qty | Type |
+------+------+------+
| 1132 |  1   |  S   |
| 1132 |  2   |  S   |
| 1132 |  3   |  R   |
+------+------+------+

我所做的是选择第一组' S'在查询中,然后选择第二组' R'在另一个查询中,然后减去它们,如果有很多项目要处理,就会导致性能不足!

请建议。

1 个答案:

答案 0 :(得分:1)

如果您以不同的方式表达问题,这变得很容易:不是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` 是否定标记:

{{1}}