2014-04-04 39 views
0

如何在我的SQL腳本中添加子查詢作爲列?如何在SQL中添加子查詢作爲列

例如

Select emp_no, name,gender , 
    (select department_name from departments where employees.emp_no = departments.emp_no) 
from employees 

PS:我使用Oracle 8

+0

1.報價gender' 2.後'如果返回單行 - 它應該工作 – zerkms

+0

亂猜,而是逗號 – SS781

+0

逗號不是問題,我只是錯誤地輸入了這個查詢。這個查詢的結果是在子查詢SELECT部分​​ – rjmcb

回答

0

你似乎缺少性別後逗號。

Select emp_no, name,gender , 
(select department_name from departments  where employees.emp_no = departments.emp_no) as dept_name from employees 
0

以下是您需要的。在性別後添加逗號。這個子查詢需要爲每個結果返回一行,否則會出現錯誤。

Select emp_no, name,gender, 
    (select department_name from departments where employees.emp_no = departments.emp_no) 
from employees 
1

通過語義學,我的理解是,您希望員工的部門名稱與他/她的其他信息一起顯示。我會建議你做代替連接:

Select emp_no, name, gender, department_name 
from employees emp, departments dept 
where emp.emp_no = dept.emp_no; 
+0

這裏很好的一個錯誤「ORA-0936 Missing Expression」,不回答問題,但我忽略了子查詢的事實甚至沒有最好的方式去這裏... – SS781

+0

不,這只是一個虛擬查詢,所以你只要理解我的問題。 – rjmcb

1

這看起來相當健康,我會建議一些(可能的拼寫錯誤)清理:後「性別」添加一個逗號和申報表名,還設置了子查詢的別名

Select employees.emp_no, employees.name, employees.gender, 
    (select departments.department_name from departments where employees.emp_no = departments.emp_no) as dept_name 
from employees 

或者,一個漂亮的加入會會的工作也一樣,如果其他數據是可行的:

Select employees.emp_no, employees.name, employees.gender, departments.department_name 
from employees 
inner join departments on employees.emp_no = departments.emp_no 
+0

第一個是我剛剛做的,但是顯示錯誤...「缺少表達式」 – rjmcb

+0

如果您在子查詢選擇中收到「缺少表達式」,則表示您有空/無匹配行。基本上,你有Emp_No 1,2,3,4,5但只有1,2,4,5返回department_name。你有一個子查詢選擇的錯誤數據,因此返回一個錯誤,因爲並不是所有來自根表的行都在子查詢中有值。 嘗試連接,看看你是否得到錯誤,我想你不會,但你會有比預期的行更少的行。 否則,如需更詳細的幫助,請發佈一些示例數據 – JBC

0

該查詢你的答案,但如果有一種人只會工作因爲如果我們使用多於一列的話,它將會重演一個錯誤。

"Select employee_id,first_name, 
    (select department_name,manager_id from departments where employees.department_id = departments.department_id) as new_column 
from employees;" 
0

你可以試試這個:

SELECT em.emp_no, em."name",em.gender , (SELECT不同dp.department_name FROM departments dp WHERE em.emp_no = dp.emp_no) my_sub FROM employees em