我正在计算视图中一个名为“学位等级”的字段。这是“学位”表中的一个字段,该表显示每个教师的学位。一名教师可以拥有一个以上的学位。
字段“学位”也位于表“ Crosswalk_Table”中。我想根据Crosswalk_table中“ Degree_Hierarchy”列中的最大值为教职员工选择学位级别。
下面的代码显示学位级别(具有较高的层次结构值)的“硕士”而不是“医生”。非常感谢您的任何帮助。
CAST (
(SELECT DEGREE_LEVEL
FROM Degrees D, Crosswalk_Table E
WHERE
E.DEGREE_HIERARCHY =
(SELECT MAX (DEGREE_HIERARCHY)
FROM Crosswalk_Table
WHERE DEGREE_CODE = D.FACULTY_DEGREE_CODE)
AND D.FACULTY_DEGREE_CODE = E.DEGREE_CODE
AND D.PERSON_SKEY = SRC.PERSON_SKEY
AND ROWNUM <=1
ORDER BY DEGREE_HIERARCHY DESC)
AS VARCHAR2 (50))
样本数据:
学位表:
Person_skey Degree_Code
-------------------------
123456 MA
123456 JD
Crosswalk_Table:
degree_level degree_code degree_hierarchy
---------------------------------------------
master MA 30
doctor JD 40
如果使用的是Oracle 12或更高版本,则可以使用类似的子查询(ORDER BY和LIMIT为1行):
SELECT c.DEGREE_LEVEL
FROM Degrees d
JOIN CROSSWALK_TABLE c
ON c.Degree_Code = d.Degree_Code
WHERE d.Person_skey = 123456
ORDER BY c.DEGREE_HIERARCHY DESC
FETCH FIRST ROW ONLY
请看一下这个简单的演示:https : //dbfiddle.uk/?rdbms=oracle_18&fiddle=c8d41924c593f4f361de59a611a363cc
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句