簡體   English   中英

如果條件在Oracle SQL中

[英]If Condition in Oracle SQL

我在舊系統上工作,許多數據庫結構都很糟糕(鍵/值對)。

我有以下選擇語句:

(
    SELECT D.F_VALUE
        FROM T_WEB_QUOTES_DATA D
        WHERE
            D.F_QUOTE_ID = TO_CHAR(VR_RENTAL.QUOTEID)
        AND D.F_KEY = 'Secondary_Driver_Forename'
) AS "SECONDARY_DRIVER_FORENAME"

如您所見,它正在尋找F_Key列的值為Secondary_Driver_Forename 問題是還有另一個F_Key擁有相同的確切信息,我需要檢查兩個鍵。

所以我想做的是:

如果沒有記錄,其中F_Key = Secondary_Driver_Forename或存在這樣的記錄,但是該值是空字符串或null,那么我想去查找F_Key為2ndary_Driver_FirstName的記錄,如果該記錄不存在(或為null),我想返回一個字符串,說No Key

如何在Oracle SQL中實現這一目標?

我在想這樣的事情:

(
    SELECT (case when max(case when D.F_KEY in 'Secondary_Driver_Forename' then 1 else 0 end) = 1
                 then max(case when D.F_KEY in 'Secondary_Driver_Forename' then D.F_VALUE end)
                 else max(D.F_Value)
            end)
        FROM T_WEB_QUOTES_DATA D
        WHERE
            D.F_QUOTE_ID = TO_CHAR(VR_RENTAL.QUOTEID)
        AND D.F_KEY in ('Secondary_Driver_Forename', '2ndary_Driver_FirstName')
) AS "SECONDARY_DRIVER_FORENAME";

即,對值進行條件匯總。 如果存在主值,則使用它。 否則,只需選擇那里的值( NULL或第二個鍵的值)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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