如果条件在Oracle SQL中

J86

我在旧系统上工作,许多数据库结构都很糟糕(键/值对)。

我有以下选择语句:

(
    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中实现这一目标?

戈登·利诺夫(Gordon Linoff)

我在想这样的事情:

(
    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或第二个键中的值)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章