[英]Select field based on other column max value in oracle pl/sql
我在一個視圖中計算一個名為“Degree Level”的字段。 這是“學位”表中的一個字段,該表顯示了每個教員的學位。 一名教員可以擁有多個學位。
“學位級別”字段也在表“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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.