2014-09-02 96 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