2013-10-16 78 views
2

我試過問過這個問題,現在我發現了一個更加固定的方式來提出這個問題。使用GROUP BY在計算列上彙總SUM

我在Access工作2007年

,我有以下格式在訪問查詢:

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」作爲聚合函數的一部分。

如何正確做骨料任何想法?

回答

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; 
+0

謝謝!這正是我需要的。我知道那裏有另一個子查詢。 –

0

如果你只有一個表,這些字段:RecDate AdjYield在一個名爲記錄表,你

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

如果不是的話,請澄清。

+0

這是一種解決方法,但我試圖將它整合到一個查詢中。 –