MS Access MAX和MIN功能无法返回正确的结果

时间:2016-02-19 17:21:32

标签: sql ms-access

我在MS访问中有一个自动报告,此查询从给定日期范围内的所有记录中选择每个人的最低时数,最高时数,平均时数和总时数。

SELECT tbl.Consultant, round(avg(tbl.HoursSpent),0) as Average, Min(tbl.HoursSpent) as Lowest, Max(tbl.HoursSpent) as Highest, Sum(tbl.HoursSpent) as Total
FROM tbl
WHERE 
(tbl.Canceled = false)
AND (
(tbl.DateIn >= [Forms]![Reports]![ReportStartDate])
AND 
(tbl.DateIn <= [Forms]![Reports]![ReportEndDate])
)
GROUP BY tbl.Consultant

而不是获得预期的结果:MIN在任何记录中产生最小的小时数,MAX产生最高的小时数;在某些情况下,查询会产生高于MAX的MIN。

实施例: Incorrect Query Result

1 个答案:

答案 0 :(得分:0)

当然,在我发布SO之后,我想到了一种改变查询的方法。

对于遇到此问题的未来MS Access用户:

MAX和MIN功能不会自动将值转换为整数! 使用 Val()确保将每个值转换为整数:

MAX(Val(NumberValue))MIN(Val(NumberValue))

这不是SUM()和AVG()函数的问题,因为它们只能处理整数,因此会自动进行转换。 MIN()和MAX()可用于日期和其他字段类型,因此需要进行显式转换。

enter image description here