2014-01-14 104 views
0

我有一組付款數據與供應商,發票和金額字段。一次付款可以有多個與之相關的發票。我想獲得付款的金額,折扣和netpayment的總和。查詢我對一次付款有效,但對於其他付款,它返回與每張發票相對應的單獨記錄。SQL:SUM函數沒有返回結果,因爲我期望

所需的結果

DisiredResult

當前結果

Current Result

下面是該查詢

SELECT 
    Payment, 
    Vendor, 
    SUM(Amount) AS AmountTotal, 
    SUM(Discount) AS DiscountTotal, 
    SUM(Amount) - SUM(Discount) AS NetPaymentTotal 
FROM 
    PaymentInfo 
GROUP BY 
    Payment, Vendor, Amount, Discount; 

我還創建了一個SQL Fiddle證明PR oblem。

付款5000002正常工作,但付款5000005沒有。從group by

回答

2

刪除amountdiscount

SELECT 
    Payment, 
    Vendor, 
    SUM(Amount) AS AmountTotal, 
    SUM(Discount) AS DiscountTotal, 
    SUM(Amount) - SUM(Discount) AS NetPaymentTotal 
FROM 
    PaymentInfo 
GROUP BY 
    Payment, Vendor; 
+0

工作!謝謝! – jiverson

0

當包括group by子句中amount,你是根據account的也分離了。由於amountvendor'5000002'是一樣的,你沒有得到該vendor的差異。與其他vendor不同,amount的不同之處在於,對於每個數量,您將獲得兩行作爲組。

因此,如果從group by子句中刪除account,則會得到期望的結果。