2

我之前尝试过问这个问题,现在我找到了一种更统一的方式来问这个问题。

我正在使用 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) as AdjYield零件周围,然后GROUP BY RecDate在最后添加。但是我收到一条错误消息

您尝试执行的查询不包含指定表达式“Class1”作为聚合函数的一部分。

关于如何正确进行此聚合的任何想法?

4

2 回答 2

2

使用您现有的查询作为您在另一个地方的子查询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;
于 2013-10-16T16:33:30.610 回答
0

如果您只有一个包含这些字段的表:RecDate AdjYield 在一个称为记录的表中,您

should be able to say
SELECT SUM(AdjYield)
FROM Records
Group by RecDate 

如果不是这种情况,请澄清。

于 2013-10-16T16:30:01.080 回答