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
我有一个查询,如果满足条件,它应该 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