我在Access 2010中编写了以下查询,它正在回显一条错误消息:
SELECT DatePart("ww",Date,2,1) AS WeekNumber, Metric, Sum(MetricValue) AS WeeklyMetricValue
FROM qryActual
GROUP BY Metric, WeekNumber;
这是错误消息:
You tried to execute a query that does not include the specified expression 'DatePart("ww",Date,2,1)' as part of an aggregate function.
我是否遗漏了一个非常简单的错误,或者是否需要在单独的查询中执行DatePart才能将其包含在GROUP BY
中?
如果您需要其他详细信息,请与我们联系。谢谢!
答案 0 :(得分:3)
是的,它可以。唯一的问题是您按列别名进行分组,您需要按表达式本身进行分组,即GROUP BY
替换WeekNumber
DatePart("ww",Date,2,1)
:
SELECT DATEPART("ww",Date,2,1) AS WeekNumber,
Metric,
SUM(MetricValue) AS WeeklyMetricValue
FROM qryActual
GROUP BY Metric, DATEPART("ww",Date,2,1);
根据评论进一步详细说明,这是查询部分的执行顺序:
正如您所看到的,SELECT
非常接近底部,因此当执行GROUP BY
时,别名尚不存在,因此您可以引用列别名的唯一位置是{{1子句。 (有DBMS允许在其他地方使用它,例如MySQL,但这些是例外,而不是规则)。