2011-02-11 51 views
1

我在SQL Server中有一個非常簡單的查詢。但它給錯誤。SQL Server內部查詢問題

select * from(
select emp_name + ' ' + emp.surname as employee from ca_contact 
) 

此查詢不起作用。 但是,當我寫這樣的下面,它是工作:

select emp_name + ' ' + emp.surname as employee from ca_contact 

回答

2

你會需要一個別名。在這種情況下foobar

select * from 
    (select emp_name + ' ' + emp.surname as employee from ca_contact) foobar 
1

我認爲你需要指定表的別名 -

select * from(
select emp_name + ' ' + emp.surname as employee from ca_contact 
) t1 
+0

謝謝。我通常在Oracle上編寫代碼,因此我無法考慮放置表別名。 – user125687 2011-02-11 14:28:08

0

在SQL Server中,所有派生表必須有一個別名[例外是,如果沒有選擇從他們什麼,例如在IN/EXISTS條款]中。對於SQL Server 2005以後的工作,另一種方法是使用公用表表達式,這在偶然的情況下也可用於最新版本的Oracle。

一個簡單意義的別名

select * from 
    (select emp_name + ' ' + surname as employee from ca_contact) [ ] 

一個公共表表達式,也以在Sametime

;WITH [ ](employee) AS (
    select emp_name + ' ' + surname 
    from ca_contact) 
select * from [ ] 

FWIW命名列,可以省略CTE列名和查詢

得到他們
WITH [ ] AS (
    select emp_name + ' ' + surname as employee 
    from ca_contact) 
select * from [ ] 

注意:不知道你怎麼能有emp.surname,因爲在您的查詢中沒有定義表/別名emp

0

請嘗試以下查詢

select employee from (select emp_name + ' ' + emp.surname as employee from ca_contact) as test