Remou使得一个有效点的唯一ID将是有益的,因为这将允许指顶行的未来,但是这可能是你无法控制的约束。
的数据源是有点别扭与连字符的年,其防止一个简单的查询分组。第二个问题是,你根本不能只按TotalSpent
字段的最大值进行分组,因为它可能不是最后一个字段(例如大的退款可能会影响总共数年)。
我的解决办法包括找到的最近一年的每个ID(查询),然后改革去年标签加入到表B.我不想执行的计算领域的加盟,使我在把它包另一个子查询(查询B)。然后将其加入到原始表/查询中以提取关键行和值。
SELECT YourTable.[YourYearField],
YourTable.ID,
YourTable.TotalSpent
FROM (SELECT A.ID,
[StartYear] & "-" & [EndYear] AS Grouping
FROM (SELECT YourTable.ID,
Max(Val(Right$([YourYearField], 4))) AS EndYear,
Max(Val(Right$([YourYearField], 4)) - 1) AS StartYear
FROM YourTable
GROUP BY YourTable.ID) AS A
GROUP BY A.ID,
[StartYear] & "-" & [EndYear]) AS B
INNER JOIN YourTable
ON (B.Grouping = YourTable.[YourYearField])
AND (B.ID = YourTable.ID)
GROUP BY YourTable.[YourYearField],
YourTable.ID,
YourTable.TotalSpent;
如果你确实有一个唯一的标识符,这将容易得多。是否有任何机会或只有多个ID行在该表上的自动编号? – Fionnuala