Sql 在 where 条件下查询最大值

Sql query with max value in where condition

我有一个查询,如果满足条件,它应该 return 一行。此查询比较 3 个表中的列,应该使用 DEGREE_HIERARCHY 的最大值,因为可以有多个值。然后它应该在 where 子句中使用 max(DEGREE_HIERARCHY) 来满足条件。

我目前的代码有错误:

[Error] Execution (1: 8): ORA-00937: not a single-group group function

感谢任何帮助,谢谢!

SELECT V.FACULTY_DEGREE_CODE,
        V.FACULTY_SUBJECT_CODE,
        I.EMPLOYEE_DEPARTMENT_HOME_ORG,
        MAX(D.DEGREE_HIERARCHY)
        
   FROM V_degrees  V
        JOIN DEGREE_CROSSWALK D
            ON V.FACULTY_DEGREE_CODE =
               D.DEGREE_CODE
        JOIN I_DETAILS I
            ON V.ID = I.HR_ID
        INNER JOIN  SUBJ_CROSSWALK  S
             ON V.FACULTY_DEGREE_CODE =
              S.FACULTY_DEGREE_CODE
            INNER JOIN SUBJ_CROSSWALK  S
                ON S.FACULTY_SUBJECT_CODE =
                   V.FACULTY_SUBJECT_CODE
  WHERE V.PERSON_id = 12345
  AND 
  (
   (I.EMPLOYEE_DEPARTMENT_HOME_ORG != '396000'
    OR I.EMPLOYEE_DEPARTMENT_HOME_ORG != '396010'
    ) and
    (DEGREE_HIERARCHY > 30)
  )
  AND 
  (
    (DEGREE_HIERARCHY > 30) AND
    (NOT EXISTS (SELECT FACULTY_SUBJECT_CODE, FACULTY_DEGREE_CODE 
                FROM SUBJ_CROSSWALK  S
                WHERE S.FACULTY_SUBJECT_CODE = V.FACULTY_SUBJECT_CODE
                AND
                V.FACULTY_DEGREE_CODE = S.FACULTY_DEGREE_CODE)
    )
  )
    

                      

SELECT 列表中的未聚合列必须出现在 GROUP BY 子句中...您忘记添加了。只需在末尾添加:

GROUP BY V.FACULTY_DEGREE_CODE,
         V.FACULTY_SUBJECT_CODE,
         I.EMPLOYEE_DEPARTMENT_HOME_ORG