访问查询以计算带条件的最后 2 个数字数据

Access Query to calculate last 2 Number data with condition

我需要你的帮助:

我正在考虑这个,但不知道在访问查询中正确地写它:

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

我想我需要一个子查询,但想不出一个来申请..

如有任何帮助,我们将不胜感激!

谢谢!

这是一个应该有效的查询:

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 使用最大周数。如果不是这种情况,那么我可以向您展示如何重新处理查询。

关于您的 table 设计的几点注意事项:

1) 我强烈 建议您将主键添加到您的 table。它会在以后为您省去大量令人头疼的事情。使用唯一 ID 更容易安全删除。如果您在数据中意外出现重复,这将使理顺变得更容易。它甚至可以阻止错误的查询弄乱您的数据。

2) 您似乎将 Years 作为文本字段(您在查询中将值用单引号引起来)。我会把它改成一个数字。数字可以节省 space 和查询时间,因为它们占用的字节更少并且更容易索引。

3) 不要在 table 名称中使用 space,例如周数。这更难阅读,更难键入(因为您必须将 table 名称括在括号中),并且更难调试。也不要对 table 名称使用保留字。你可以逃避他们,但如果你不这样做会容易得多。我会使用驼峰式大小写或一些名称变体,在这种情况下,您的字段将是数量、年数和周数。