2016-06-07 47 views
0

當我寫SQL此查詢加告訴我的錯誤(ORA-00998:必須指定一個列別名這個表達式)如何alias列在SQL加

create or replace view vw_salary as select dname , 
(select count(*) from employee where dno=department.dnumber) from department; 
+1

更高效的前'從department'加上'AS empcount' – Arulkumar

+0

謝謝你現在的工作。 – John

回答

1

視圖中的列需要有一個名稱。所以,你需要as子查詢後:

create or replace view vw_salary as 
    select dname, 
      (select count(*) from employee e where e.dno = d.dnumber 
      ) as NumEmployees 
    from department d; 

我強烈建議您使用表別名和合格的列名(即使用表的別名)。這是,特別是對於相關子查詢很重要,因爲它很容易犯錯,而且很難調試。

我還注意到該視圖被稱爲vw_salary,但沒有薪水信息。

0

這意味着你需要命名計數表達...嘗試以下操作,可以將「TheCount」更改爲您想要使用的任何名稱。

create or replace view vw_salary as select dname , 
(select count(*) AS TheCount from employee where dno=department.dnumber) from department; 
1
select department.dname, count(employee.dno) as empCount 
    from department 
    left join employee 
     on employee.dno = department.dnumber 
group by department.dname 

我認爲這將是比你目前的格式

+0

此查詢不會返回沒有任何員工的部門。 – JSR

+0

@jsr確定左加入 – Paparazzi

+0

仍然不正確,對於沒有員工的部門它將返回1的計數。 – JSR