nvl多列

时间:2015-10-07 21:03:05

标签: sql oracle

我从两个子查询s1和s2中选择。如果s2中的列的值为null,我可以使用nvl来检索s1中的列吗?

select
    s1.name_last
    nvl(s2.proj_mgr, s1.func_mgr)
from
    (...) s1
    left outer join
    (...) s2
on
    s1.empid = s2.owner_id
;

1 个答案:

答案 0 :(得分:1)

我建议你改用coalesce()。它有两个优点。首先,它是ANSI标准,因此可用于多个数据库。其次,它可能需要多个参数:

select s1.name_last, coalesce(s2.proj_mgr, s1.func_mgr)
from (...) s1 left outer join
     (...) s2
     on s1.empid = s2.owner_id
;