Oracle SQL:NVL函数

时间:2014-09-09 07:26:09

标签: sql oracle

如果表B中不存在Value,则将值替换为null -

表A员工

ID,NAME
1,Sam               
2,Jon
3,Nick 

表B Sallery

ID,Sallery
1,500
2,1000

期望的结果:

NAME,Sallery
Sam,500
Jon,1000
Nick,

到目前为止我得到了什么:

 Select A.NAME, 
        NVL(Select Sum(B.Amount) from Sallery B where B.ID=A.ID  ,null)
 From Employees A

我想避免使用“Case When exists”表达式

谢谢

2 个答案:

答案 0 :(得分:2)

您应该使用left outer join

select a.name
,      sum(b.amount) amount
from   employees a 
left
outer
join   sallery b
on     b.id = a.id

如果sum中没有行,null将返回b

答案 1 :(得分:1)

SELECT B.name, A.sal 
FROM (SELECT SUM(NVL(salary, 0)) sal, id
     FROM salary
     GROUP BY id)A, Employees B
WHERE A.id=B.id