【问题标题】:SQL: Multi Table, One to Many, Multi Sum querySQL:多表、一对多、多和查询
【发布时间】:2019-01-09 17:24:03
【问题描述】:

我正在尝试从多个表中获取数据并进行一些求和。数据结构是这样的:

转头

  • 翻译日期
  • TranNbr
  • 单位

TransDetail

  • TranNbr
  • 体重秤
  • 传输时间

每个TransHeader有多个TransDetail记录。

有大量数据,所以我正在尝试总结以获得如下输出:

日期、总单位、总重量、总时间

每行代表按日期计算的总数。

这是我失败的尝试:

select th.TranDate, sum(th.Units), sum(td.TranWeight), sum(td.TranTime)
from TransHeader th join
     TransDetail td
     on td.TranNbr = th.TranNbr
group by th.TranDate;

它适用于 TranWeight 和 TranTime,但由于它对 TransDetail 表中每个匹配的单位求和,所以会出现过度膨胀。

【问题讨论】:

    标签: sql sum hierarchy multi-level


    【解决方案1】:

    这很棘手,因为您是按照层次结构进行聚合的。也许最简单的方法是两级聚合:

    select th.TranDate, sum(th.Units), sum(td.TranWeight), sum(td.TranTime)
    from TransHeader th join
         (select td.TranNbr, sum(td.TranWeight) as TranWeight, sum(td.TranTime) as TranTime
          from TransDetail td
          group by td.TranNbr
         ) td
         on td.TranNbr = th.TranNbr
    group by th.TranDate;
    

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 2021-01-06
      • 1970-01-01
      相关资源
      最近更新 更多