2014-09-02 88 views
1

我有一个“发票详细信息”表,我想得到#,这可以通过从回报中扣除销售额来实现。MySQL查询减去两组值

的问题是:我可以做一个查询这样的计算,通过让type =“S”的SUM(qty)和SUM type的(qty)=“R”然后减去他们得到net_sales该项目#?如果有多个项目#可以获得net_sales?

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

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

请指教。

回答

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` 
+0

完美@EugenRieck,工作像魅力:) – CairoCoder 2014-09-02 23:54:39