总和问题 - 不给出单独的行总和,显示每行的总和

Posted

技术标签:

【中文标题】总和问题 - 不给出单独的行总和,显示每行的总和【英文标题】:Issues with Sums - Not Giving Individual Row Sum, Showing Total Sum On Each Row 【发布时间】:2019-07-05 09:32:17 【问题描述】:

我正在尝试加入两个报告,以根据匹配的客户编号、订单编号和产品代码查找总运费、重量和美元金额。我最初是对每个客户编号、订单编号、产品代码、重量和美元金额组合的运费求和。但由于某种原因,它重复了每个重量和美元金额的客户编号/订单编号/产品代码的总和,我不知道为什么。

我已经尝试更改基本上所有可能组合中的总和列,但如果我将重量和美元相加,那么运费是正确的,重量和美元金额是错误的。如果我计算运费,那么运费是错误的,但重量和美元是正确的。

    SELECT a.cust, a.order_num, a.prod_code, a.WEIGHT as weight, a.AMOUNT as amount, SUM(b.AMOUNT) as freight_amt
    from dbo.[report1] a
    join dbo.[report2] b on a.cust = b.cust and a.order_num = b.order_num and a.prod_code = b.product and a.loc = b.loc
    where a.order_num = '149254'
    group by a.cust, a.order_num, a.prod_code, a.WEIGHT, a.AMOUNT

我期待的是: 客户A,订单号123,prod code 456,重量10,数量200,运费76

客户A,订单号789,prod code 456,重量15,数量150,运费90

我的查询当前显示的内容是: 客户A,订单号123,prod code 456,重量10,数量200,运费166

客户A,订单号789,prod code 456,重量15,数量150,运费166

如果这令人困惑,我深表歉意。我无法提供我正在使用的任何实际数据或基于公司政策的真实列名,所以这是我目前能做的最好的事情。提前致谢。

【问题讨论】:

如果您不想要总和,请不要sum()。或者可以先group bydbo.[report1]dbo.[report2]分别,然后加入结果。如果没有样本数据和结果,这只是猜测。 【参考方案1】:

我猜你想要union allgroup by

select cust, order_num, prod_code, loc,
       sum(weight),  -- I'm not sure if this should be sum() or max()
       sum(amount), sum(freight_amt)
from ((select cust, order_num, prod_code, loc,
              weight, amount,
              null as freight_amt
       from dbo.report1
      ) union all
      (select cust, order_num, product, loc,
              null as weight, null as amount,
              null as freight_amt
       from dbo.report1
      )
     ) rr
group by cust, order_num, prod_code, loc

【讨论】:

以上是关于总和问题 - 不给出单独的行总和,显示每行的总和的主要内容,如果未能解决你的问题,请参考以下文章

获取每行增量值的总和[重复]

从表中选择不同的记录并执行重复行的列总和(托盘、总和)。并显示重复的行一次[关闭]

在每组下方的新行中显示具有相同属性的行总和

如何在 DB2 SQL 中创建一个给出给定行时间戳之前 5 分钟内所有行总和的列?

周六和周日的行总和

Pandas - 按函数和总和列分组以提取其他列总和为 0 的行