我之前尝试过问这个问题,现在我找到了一种更统一的方式来问这个问题。
我正在使用 Access 2007。
我在 Access 中有以下格式的查询:
SELECT RecDate, Weight * YTD / (SELECT SUM(Weight) From Records
WHERE Class1=t2.Class1 AND Class2 = t2.Class2) as AdjYield
From Records as t2
WHERE Class1="fi" AND Class2="ra"
它给了我以下结果
RecDate AdjYield
11/27/2012 4.73704622309864E-05
11/27/2012 0
11/27/2012 -1.87533613791046E-04
11/27/2012 -2.4014644030909E-05
11/27/2012 1.29986083977377E-04
11/27/2012 1.2765190817936E-04
12/11/2012 1.10288780895771E-04
12/11/2012 0
12/11/2012 -1.7463943470934E-04
12/11/2012 -1.51778890534467E-05
12/11/2012 1.47374111584102E-04
12/11/2012 1.45120288096115E-04
现在我想要每天计算的 AdjYield 的总和
RecDate AdJYield
11/27/2012, 1.557E-05
12/11/2012, 3.549E-05
我尝试将 SUM() 放在 Weight * YTD/(SELECT SUM(Weight) From Records WHERE Class1=t2.Class1 AND Class2 = t2.Class2) 作为 AdjYield
部分,然后添加 GROUP BY RecDate
最后。但是我收到一条错误消息
You tried to execute a query that does not include the specified expression "Class1" as part of an aggregate function.
知道如何正确进行此聚合吗?
最佳答案
将现有查询用作另一个GROUP BY RecDate
的子查询。
SELECT sub.RecDate, Sum(sub.AdjYield) AS SumOfAdjYield
FROM
(
SELECT RecDate, Weight * YTD / (SELECT SUM(Weight) From Records
WHERE Class1=t2.Class1 AND Class2 = t2.Class2) as AdjYield
From Records as t2
WHERE Class1="fi" AND Class2="ra"
) AS sub
GROUP BY sub.RecDate;
关于sql - 使用 GROUP BY 在计算列上聚合 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408625/