SQL:SUM函数未按预期返回结果

SQL:SUM函数未按预期返回结果,sql,oracle,Sql,Oracle,我有一组带有供应商、发票和金额字段的付款数据。一次付款可以有多张发票与其关联。我想得到付款的金额、折扣和净付款的总和。我的查询对于一种付款很有效,但对于另一种付款,它会返回对应于每个发票的单独记录 期望结果 当前结果 这是一个问题 SELECT Payment, Vendor, SUM(Amount) AS AmountTotal, SUM(Discount) AS DiscountTotal, SUM(Amount) - SUM(Discount) AS NetPaym

我有一组带有供应商、发票和金额字段的付款数据。一次付款可以有多张发票与其关联。我想得到付款的金额、折扣和净付款的总和。我的查询对于一种付款很有效,但对于另一种付款,它会返回对应于每个发票的单独记录

期望结果

当前结果

这是一个问题

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;
我还创建了一个示例来演示这个问题


付款5000002行得通,但付款5000005不行

分组中删除
金额
折扣

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

当您在
分组依据
子句中包含
金额
时,您也在根据
账户
对其进行分离。由于
供应商
金额
与“5000002”相同,因此该
供应商
不会产生差异。与其他
供应商
不同的是,
金额
有所不同,每个金额都有两行作为组

因此,如果从
groupby
子句中删除
account
,就会得到所需的结果