簡體   English   中英

Select 字段基於 oracle pl/sql 中的其他列最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM