2014-01-14 62 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,则会得到期望的结果。