需要在sql developer中使用nvl和to_char将数字转换为字符串

时间:2014-07-28 02:36:37

标签: sql oracle outer-join

我正在尝试编写一个查询,该查询将从我的部门表中提供所有信息,并与employees表联接以获取所有部门的经理的姓名。我可以得到他们,除了一个没有经理的部门,为此我需要打印出来#34;没有经理"。我尝试在WHERE子句中使用nvl和to_char,但我不认为我正在写它。

这是我写的代码:

SELECT d.department_id,d.DEPARTMENT_NAME,d.LOCATION_ID,d.MANAGER_ID,
e.first_name||' '||e.last_name AS Manager
FROM departments d
JOIN employees e ON d.MANAGER_ID = e.employee_ID
WHERE NVL(TO_CHAR(d.MANAGER_ID),'No Manager');

当我在没有WHERE子句的情况下运行它时,除了那个缺少的部门之外,我得到了正确的输出。

1 个答案:

答案 0 :(得分:0)

你需要的是一个外部联接。

select  d.department_id,
        d.department_name,
        d.location_id,
        coalesce(d.manager_id, 'No Manager'),
        coalesce(e.first_name||' '||e.last_name, 'No Manager')  as manager
from    departments d
left outer join
        employees e 
        on d.manager_id = e.employee_id;

使用内部联接,您将只获得拥有经理的部门。

LEFT OUTER JOIN确保查询返回左侧表格中的所有记录,即部门。

COALESCENVL类似,是不同DBMS的标准,而NVL是Oracle特定的。