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

То, что я хочу добиться, это получить сумму [Volume] в течение последних 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)? Остальное выглядит хорошо, тo. –

+0

Пробовал это, и я не получал никаких результатов, запрос пуста. –

 Смежные вопросы

  • Нет связанных вопросов^_^