2017-04-12 71 views
0

我需要你的帮助,在此:Access查询来计算最后2个数字数据与条件

Data

我在想这一点,但也没办法把它正确地写在访问查询:

Select ID, SUM(Amount) from tblRawData Where Years = '2017' and [Week num] = Max([Week Num]) - 2 < Max([Week Num]) Group by ID 

我想我需要一个子查询,但不能想到一个应用..

任何帮助,将不胜感激!

谢谢!

回答

0

下面是应该工作的查询:

SELECT r.ID, SUM(r.Amount) 
FROM tblRawData r 
LEFT JOIN (
    SELECT id, Max([Week Num]) as maxWeek 
    FROM tblRawData 
    WHERE Years = '2017' 
    GROUP BY ID 
) w ON r.id = w.id 
WHERE r.Years = '2017' 
AND r.[Week num] >= w.maxWeek-1 
GROUP BY r.ID 

我假设你想要使用的最大的一周每个ID。如果情况并非如此,那么我可以告诉你如何重新进行查询。

一对夫妇的餐桌设计说明:

1)我想强烈劝你一个主键添加到您的表。它会在以后为你节省一笔令人难以置信的头痛。使用唯一ID安全删除更容易。如果您的数据中出现意外重复,它将使您更容易理顺。它甚至可以阻止糟糕的查询搞乱你的数据。

2)您似乎将年份作为文本字段(您的查询中包含单引号的值)。我会改变这个数字。数字节省空间和查询时间,因为它们占用更少的字节并且更易于索引。

3)不要在表名中使用空格,例如Week Num。这很难阅读,很难打字(因为你必须将表格名称包装在括号中),而且更难调试。也不要使用表名的保留字。你可以逃避它们,但如果你不这样做会容易得多。我会使用骆驼套或某些变体名称,在这种情况下,您的字段将为金额,年份和weekNum。