by max over partition_MAX()和MAX()OVER PARTITION BY在Teradata查询中产生错误3504

I am trying to produce a results table with the last completed course date for each course code, as well as the last completed course code overall for each employee. Below is my query:

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

This query produces the following error:

3504 : Selected non-aggregate values must be part of the associated group

If I remove the MAX() OVER (PARTITION BY...) line, the query executes just fine, so I've isolated the problem to that line, but after searching these forums and the internet I can't see what I'm doing wrong. Can anyone help?

解决方案

As Ponies says in a comment, you cannot mix OLAP functions with aggregate functions.

Perhaps it's easier to get the last completion date for each employee, and join that to a dataset containing the last completion date for each of the three targeted courses.

This is an untested idea that should hopefully put you down the right path:

SELECT employee_number,

course_code,

MAX(course_completion_date) AS max_date,

lcc.LAST_COURSE_COMPLETED

FROM employee_course_completion ecc

LEFT JOIN (

SELECT employee_number,

MAX(course_completion_date) AS LAST_COURSE_COMPLETED

FROM employee_course_completion

WHERE course_code IN ('M910303', 'M91301R', 'M91301P')

) lcc

ON lcc.employee_number = ecc.employee_number

WHERE course_code IN ('M910303', 'M91301R', 'M91301P')

GROUP BY employee_number, course_code, lcc.LAST_COURSE_COMPLETED

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值