将多个列使用NVL – Oracle SQL
发布时间:2020-12-12 15:11:33 所属栏目:百科 来源:网络整理
导读:早安我心爱的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(+) =
早安我心爱的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 本质上我想要做的是如果存在与lookup_value.descr的case_char.value匹配,然后显示它,如果没有,那么如果存在与case_char.value和char_value.char的匹配然后显示它. 我只是想从char_value表中返回’issue’的描述,但是对于’email’,我想从lookup_value表(全部在同一个别名’char_val’)下返回descrlong. 所以我的问题是,如何实现这一点,记住我希望他们出现在同一个别名下. 如果您需要任何进一步信息,请告知我们. 多谢你们 你可以嵌套NVL:NVL(a,NVL(b,NVL(c,d)) 但更好的是,使用SQL-standard COALESCE,它采用多个参数,并且还可用于非Oracle系统: COALESCE(a,b,c,d) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容