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
,就会得到所需的结果