2017-08-03 84 views
0

我有一些查詢是根據某些條件對錶中的某些qunatities進行摘要。SUM如果有多個條件

這是我的查詢的外觀:

SELECT products.code AS Code, products.IDCustomer, 
SUM(IF(production.progress <> 7, (production.QTY),0)) AS TotQTY, 
production.Code, production.IDCustomer, production.Progress, 
production.MainIDProduction, production.KITDate 
FROM products 
LEFT JOIN production ON products.Code = production.Code 
WHERE products.Active = 1 AND products.IDCustomer = 8 
GROUP BY production.Code, products.Code 

有簡易,使之ofall數量爲具有不同進度是7。現在我需要修改查詢execlude其中有進步7產品的產品標準和11.

什麼是最好的方法呢?

+1

只是把一個或您的IF – RealCheeseLord

+0

你可以在你的if()函數中使用相同的邏輯運算符。 – Shadow

回答

1

可以在WHERE子句添加一個NOT IN條件和計算SUM,如:

SELECT products.code AS Code, products.IDCustomer, 
SUM(production.QTY) AS TotQTY, 
production.Code, production.IDCustomer, production.Progress, 
production.MainIDProduction, production.KITDate 
FROM products 
LEFT JOIN production ON products.Code = production.Code 
WHERE products.Active = 1 AND products.IDCustomer = 8 
AND production.progress NOT IN (7, 11) 
GROUP BY production.Code, products.Code 
1

只需要插入 'and' 條件

SELECT products.code AS Code, products.IDCustomer, 
    SUM(IF(production.progress <> 7 and production.progress <> 11, (production.QTY),0)) AS TotQTY, 
    production.Code, production.IDCustomer, production.Progress, 
    production.MainIDProduction, production.KITDate 
    FROM products 
    LEFT JOIN production ON products.Code = production.Code 
    WHERE products.Active = 1 AND products.IDCustomer = 8 
    GROUP BY production.Code, products.Code