gpt4 book ai didi

mysql - 在 View 的结果集中返回具有非聚合列的聚合列的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-29 14:43:00 25 4
gpt4 key购买 nike

我需要比较按 ID 分组的不同客户端的两个表的最终余额。这些表具有相同的 ID,但一个表有多个 ID 条目,而另一个表则没有。我需要将表中的行与多个条目相加,因此我只有一个最终数字可以进行计算。

表1:

ID,    cost,    traceNumber,   TheDate
1, 200, 1001, 10/07/2011
1, -20, 1002, 10/08/2011
1, 130, 1003, 10/10/2011
2, 300, 1005, 10/10/2011

表2:

ID,    cost
1, 200
2, 300

ID 1 的结果为 310,与 table2 的 200 相比,差异为 110

查询将如下所示。

SELECT DISTINCT
Table1.ID,
Table1.TheDate ,
Table1.traceNumber,
Table1.[cost] AS Frost_Balance,
SUM(Table1.[cost]) AS SUM_Frost_Balance,
Table2.[cost] AS Ternean_Balance,
SUM(Table1.[cost]) - Table2.[cost] AS Ending_Balance,
FROM
Table1
INNER JOIN Table2 ON Table1.ID =Table2.CustomerID
GROUP BY
dbo.Frost.ID

查询必须在结果集中显示多列,因为它将用于报告。我尝试按结果集中的所有列进行分组,但这给了我错误的结果。是否有另一种方法来计算需要求和的列?

最佳答案

您可以使用“窗口聚合函数”,如下所示:

select 
table1.*,
sum(table1.cost) over (partition by table1.id) sum_frost_balance,
table2.cost,
sum(table1.cost) over (partition by table1.id) - table2.cost ending_balance
from table1
join table2 on table1.id = table2.id

关于mysql - 在 View 的结果集中返回具有非聚合列的聚合列的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com