我在表TheTable上有以下查询。对于每条记录,它会查找具有相同Field1和Field2的所有记录,并且在Field3中具有较小的值,然后对Field5求和。
SELECT OuterQuery.Field1,
OuterQuery.Field2,
OuterQuery.Field3,
OuterQuery.Field4,
OuterQuery.Field5,
SUM(InnerQuery.Field5) AS Accumulate5
FROM TheTable OuterQuery INNER JOIN TheTable InnerQuery
ON InnerQuery.Field1 = OuterQuery.Field1 AND
InnerQuery.Field2 = OuterQuery.Field2 AND
InnerQuery.Field3 <= OuterQuery.Field3
GROUP BY OuterQuery.Field1,
OuterQuery.Field2,
OuterQuery.Field3,
OuterQuery.Field4,
OuterQuery.Field5
ORDER BY OuterQuery.Field1,
OuterQuery.Field2,
OuterQuery.Field3,
OuterQuery.Field4,
OuterQuery.Field5
对于这样一个简单的函数,编码和认知解析非常繁琐。 SELECT,GROUP BY和ORDER BY子句在概念上可以替换为OuterQuery。*,但Access并不接受它。我不认为有一个应用程序切换或编码习惯用法将允许这种优雅的外卡?如果你必须格式化其中一个字段,上面的代码会变得更加丑陋,因为FORMAT表达式也被复制了。
我已将此发布到: