MAX() and MAX() OVER PARTITION BY produces error 3504 in Teradata Query

后端 未结 5 1345
猫巷女王i
猫巷女王i 2021-02-15 10:05

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

5条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-02-15 11:07

    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
    

提交回复
热议问题