【发布时间】:2011-03-07 00:13:43
【问题描述】:
我正在尝试生成一个结果表,其中包含每个课程代码的最后完成课程日期,以及每个员工最后完成的课程代码。以下是我的查询:
SELECT employee_number,
MAX(course_completion_date)
OVER (PARTITION BY course_code) AS max_course_date,
MAX(course_completion_date) AS max_date
FROM employee_course_completion
WHERE course_code IN ('M910303', 'M91301R', 'M91301P')
GROUP BY employee_number
此查询产生以下错误:
3504 : Selected non-aggregate values must be part of the associated group
如果我删除 MAX() OVER (PARTITION BY...) 行,查询执行得很好,所以我已将问题隔离到该行,但在搜索这些论坛和互联网后,我看不到我做错了什么。有人可以帮忙吗?
【问题讨论】:
-
因为您使用 OVER 参考 MAX,SQL 将这些视为分析函数 - 而不是聚合。
标签: sql aggregate-functions teradata database-partitioning