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

これらのフィールドを持つテーブルが 1 つしかない場合: RecDate AdjYield レコードというテーブルに

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

そうでない場合は、明確にしてください。

于 2013-10-16T16:30:01.080 に答える