【问题标题】:SQL Getting sum of all rows with Inner join and group bySQL通过内连接和分组获取所有行的总和
【发布时间】:2020-08-22 21:20:44
【问题描述】:

我正在尝试获取相同 DueDate 的行总和。我正在加入 2 个表来填充其他字段。 但是,我很难汇总 Amount 列上的值,以便我可以为特定的 DueDate 最终得到一行 除了AmountDueDate 之外,其他列都具有相同的值。

以下是我的查询

SELECT
T2.Company,
T2.Code
T2.DueDate,
SUM(T2.Amount)

FROM TBL2 T2 
LEFT JOIN
    TBL1 T1 
    ON T2.Company = T1.Company 
    AND T2.Code IN 
    (
       0, 1, 2, 3, 4, 5, 6, 7, 8
    )
GROUP BY
T1.Company,T2.Code,T2.DueDate,T2.Amount

当我运行查询时,我得到:

仅聚合 DueDate 为“20200604”的行。 (5000 + 5000 = 10000)。

当值不同以及存在表连接时,如何进行聚合和分组?

我将不胜感激。

谢谢。

【问题讨论】:

标签: mysql sql group-by aggregate-functions


【解决方案1】:

您只是在寻找合适的聚合吗?

SELECT T2.Company, T2.Code T2.DueDate, SUM(T2.Amount)
FROM TBL2 T2 LEFT JOIN
     TBL1 T1 
     ON T2.Company = T1.Company AND
        T2.Code IN  0, 1, 2, 3, 4, 5, 6, 7, 8)
GROUP BY T1.Company, T2.Code, T2.DueDate;

AMOUNT不属于GROUP BY

【讨论】:

  • 你解决了我的问题。实际上,我只是简化了查询。这是一个很长的时间,我需要根据日期范围对记录进行分组。例如,如果年龄/日期从2020060120200701,它必须聚合行并仅对年龄/日期范围内的行求和。这会遵循与您的答案相同的逻辑吗?
猜你喜欢
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 2021-03-29
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多