我在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
我在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
你會需要一個別名。在這種情況下foobar
select * from
(select emp_name + ' ' + emp.surname as employee from ca_contact) foobar
我認爲你需要指定表的別名 -
select * from(
select emp_name + ' ' + emp.surname as employee from ca_contact
) t1
在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
請嘗試以下查詢
select employee from (select emp_name + ' ' + emp.surname as employee from ca_contact) as test
謝謝。我通常在Oracle上編寫代碼,因此我無法考慮放置表別名。 – user125687 2011-02-11 14:28:08