2017-02-22 40 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

尝试了这一点,我没有得到任何结果,查询变为空白。 –