У меня такой запрос:

SELECT DISTINCT MA_CustSupp.CompanyName, MA_CustSupp.TaxIdNumber, SUM(MA_SaleDocSummary.GoodsAmount) AS somma, SUM(MA_SaleDocSummary.ShippingCharges) 
AS ship, MA_CustSupp.CustSupp, MA_CustSupp.FiscalCode, COUNT(MA_SaleDoc.DocumentType) AS conto, MA_CustSuppCustomerOptions.Category
FROM  MA_CustSuppCustomerOptions INNER JOIN
                         MA_CustSupp ON MA_CustSuppCustomerOptions.Customer = MA_CustSupp.CustSupp INNER JOIN
                         MA_SaleDoc INNER JOIN
                         MA_SaleDocSummary ON MA_SaleDoc.SaleDocId = MA_SaleDocSummary.SaleDocId ON MA_CustSupp.CustSupp = MA_SaleDoc.CustSupp
WHERE        (MA_SaleDoc.IncludedInTurnover = 1) AND (MA_SaleDoc.CustSuppType = 3211264) AND (MA_SaleDoc.DocumentDate >= CONVERT(DATETIME, 
                         '2014-04-01 00:00:00', 102)) AND (MA_SaleDoc.DocumentDate <= CONVERT(DATETIME, '2014-04-08 00:00:00', 102)) AND (MA_CustSupp.CustSupp <> '022428')
GROUP BY MA_CustSupp.CompanyName, MA_CustSupp.CustSupp, MA_CustSupp.TaxIdNumber, MA_CustSupp.FiscalCode, MA_SaleDoc.DocumentType, 
                         MA_CustSuppCustomerOptions.Category
HAVING        (MA_CustSuppCustomerOptions.Category = '06') OR
                         (MA_CustSuppCustomerOptions.Category = '07')
ORDER BY somma DESC

Где у меня СУММА MA_SaleDocSummary.GoodsAmount и КОЛИЧЕСТВО MA_SaleDoc.DocumentType. Но у меня проблема ... если MA_SaleDoc.DocumentType равно ='3407876', количество товаров необходимо вычесть из общей суммы. Как я могу реализовать в этом запросе этот вариант?

0
fsalvaggio 9 Апр 2014 в 12:29

2 ответа

Лучший ответ

Если вы хотите вычесть сумму, если DocumentType равно 3407876, то, вероятно, это сработает для SQL Server.

SUM(CASE WHEN MA_SaleDoc.DocumentType = '3407876' THEN (MA_SaleDocSummary.GoodsAmount * -1) ELSE MA_SaleDocSummary.GoodsAmount END)
0
samar 9 Апр 2014 в 08:43
SUM(if(MA_SaleDoc.DocumentType ='3407876',0,MA_SaleDocSummary.GoodsAmount))

Это для MySQL

0
StanislavL 9 Апр 2014 в 08:34