0
나는 가장 최근에 통과 한 훈련을 습득하려고합니다. 이렇게하려면 훌륭한 작품보기가 있습니다.최대 그룹의 나머지 행 가져 오기
CREATE OR REPLACE FORCE VIEW MYAPP.most_recent_training (
employee_id, course_id, date_taken
) AS SELECT
who.employee_id,
course.course_id,
MAX(sess.end_date) date_taken
FROM employee_session_join esj
JOIN training_session sess on sess.session_id = esj.session_id
JOIN course_version vers on vers.version_id = sess.version_id
JOIN course course on course.course_id = vers.course_id
JOIN employee who on who.employee_id = esj.employee_id
WHERE esj.active_flag = 'Y'
AND sess.active_flag = 'Y'
AND course.active_flag = 'Y'
AND who.active_flag = 'Y'
AND esj.approval_status = 5 -- successfully passed
GROUP BY who.employee_id, course.course_id
좋아요, 그럼 내 쿼리가 훌륭하게 작동합니다. 여기에 내 문제가 있습니다. 또한 만료일이 필요하므로 준수 여부가 언제인지 알 수 있습니다. 이것은 버전에 개월 수로 저장됩니다. 그러나 ORA-00979: not a GROUP BY expression
을 불평하므로 vers.valid_for_months
을 추가 할 수 없습니다.
그 행의 나머지 부분을 얻고 싶습니다. 어떻게해야합니까?
그룹 별에 추가 또는 MAX 또는 MIN ... – nhgrif
로 선택하지만 같은 값의 보장은 없습니다. 12 개월 동안 만 사용할 수있는 재교육 과정이나 36 개월 동안 사용할 수있는 정식 버전을 이용할 수 있습니다. 에 의해 그룹에 추가하면, 그 두 가지를 잡을 것이고, 나는 단지 1 행만 원한다. (예, 36 개월이 걸릴 수도 있고 2 개월 후에 12 개월이 걸릴 수도 있고, 34 개월이 아닌 12 개월 만에 규정에 위배되는 것으로 나타 났을 수도 있습니다. 비즈니스 사용자 괜찮습니다. 항상 최근에 찍은 과정을 사용하십시오.) – corsiKa