2017-02-22 43 views
0

場的總和,我有以下數據:Access查詢 - 基於最新每個

Site # | Site Name | Product | Reading Date | Volume 
     1 | Cambridge | Regular | 02/21/17 08:00 | 40000 
     2 | Cambridge | Regular | 02/22/17 07:00 | 35000 
     3 | Cambridge | Regular | 02/22/17 10:00 | 30000 

我想實現的是獲得最近30天[音量]的總和,同時採取最新每天都可以閱讀,因爲它有相當不一致的地方,不管有一天有1,2或3個讀數。我已經嘗試了一些東西,但無法讓它工作。

這是我已經試過:

SELECT [Site #], Product, Sum(Volume) AS SumOfVolume, DatePart("d",InventoryDate]) AS Day 

FROM [Circle K New] 

GROUP BY [Site #], Product, Day 

HAVING (([Site #]=852446) AND (Product ="Diesel Lows")) 

ORDER BY DatePart("d",[Inventory Date]) DESC; 

結果:

enter image description here

它添加了當天的兩個讀數。我當時正在考慮獲取每日平均值,然後從中找出每月平均值。但我不確定價值變化是否會影響平均數字。根據您的描述

+0

請發表您已經嘗試的代碼或SQL。 – Fionnuala

+0

歡迎來到SO!這裏的人很興奮,渴望幫助你解決你的問題,但幫助他們幫助你很重要。考慮構建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。這很重要,因爲它顯示了你已經嘗試了什麼,你的思考過程以及你希望達到的目標。還要考慮使用代碼段的[backticks](http://stackoverflow.com/editing-help#comment-formatting),它會提高可讀性。例如'41 + 1 = 42'比41 + 1 = 42更容易閱讀。再次歡迎和良好技能前進:) – mbigras

+0

我編輯過它。感謝您的反饋。 –

回答

0

select sum(volume) 
from data as d 
where d.readingdate in (select min(d2.readingdate) 
         from data as d2 
         group by int(d2.readingdate) 
         ) and 
     d.readingdate >= dateadd("d", -30, date()); 
+0

可能選擇max(d2.readingdate)而不是min(d2.readingdate)?其餘的看起來不錯,壽。 –

+0

嘗試了這一點,我沒有得到任何結果,查詢變爲空白。 –