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