早上好,我心爱的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| [email protected]
本质上,我想做的是如果case_char.value与lookup_value.descr匹配,然后显示它,如果不匹配,则case_char.value和char_value.char存在匹配,然后显示它。
我只是想从char_value表返回'issue'的描述,但是对于'email'我想从lookup_value表返回descrlong(都在相同的别名'char_val'下)。
所以我的问题是,要牢记我希望它们出现在相同的别名下,我该如何实现这一点。
如果您需要任何进一步的信息,请告诉我。
谢谢你们
您可以嵌套NVL:
NVL(a, NVL(b, NVL(c, d))
但是更好的是,使用SQL标准的COALESCE,它确实采用了多个参数,并且还可以在非Oracle系统上运行:
COALESCE(a, b, c, d)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句