Hei*_*erg 13 sql oracle coalesce nvl
早上好,我亲爱的sql巫师和巫师,
我想要在3个表中替换3列数据.目前我正在使用NVL功能,但是这仅限于两列.
请参阅下面的示例:
SELECT ccc.case_id,
NVL (ccvl.descr, ccc.char)) char_val
FROM case_char ccc, char_value ccvl, lookup_value lval1
WHERE
ccvl.descr(+) = ccc.value
AND ccc.value = lval1.descr (+)
AND ccc.case_id IN ('123'))
case_char table
case_id|char |value
123 |email| work_email
124 |issue| tim_
char_value table
char | descr
work_email | complaint mail
tim_ | timeliness
lookup_value table
descr | descrlong
work_email| xxx@blah.com
Run Code Online (Sandbox Code Playgroud)
基本上就是我想要做的是,如果存在与lookup_value.descr然后显示它case_char.value匹配,如果没有,那么如果存在与case_char.value和char_value.char匹配,则显示它.
我只是试图返回的说明"issue'from的char_value表,但对于'电子邮件’我要回从Lookup_Array中表descrlong(全部属于相同的别名'char_val’).
所以我的问题是,我如何实现这一点,记住我希望它们出现在同一个别名下.
如果您需要任何进一步的信息,请告诉我.
多谢你们
Thi*_*ilo 17
你可以嵌套NVL:
NVL(a, NVL(b, NVL(c, d))
Run Code Online (Sandbox Code Playgroud)
但更好的是,使用SQL标准COALESCE,它确实采用多个参数,并且也适用于非Oracle系统:
COALESCE(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)