我有一张表"发票详情",我想获得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'在另一个查询中,然后减去它们,如果有很多项目要处理,就会导致性能不足!
请建议。
答案 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}}