2011-11-03 41 views
7

我要問,如何能在SELECT查詢中使用別名,使用別名在選擇查詢

我需要這個

SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE 
+4

我懷疑答案是改變你的'復SubQuery'標量表達式爲表表達式,但很難調試我們看不到的代碼。 – onedaywhen

+0

我同意你的意見。我需要使這個查詢有效。 – user960567

回答

12

你不能做到這一點:

SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE 

但是,您可以做此:

SELECT (Another Sub Query WHERE ID = A.somecolumn) 
FROM table 
JOIN SELECT (Complex SubQuery) AS A on (A.X = TABLE.Y) 

SELECT (Another Sub Query) 
FROM table 
WHERE table.afield IN (SELECT Complex SubQuery.otherfield) 

問題在於,您不能在SELECT和WHERE子句中引用像這樣的別名,因爲它們不會在執行select或where部分時進行評估。
也可以使用having子句,但子句不使用索引,應儘可能避免。

+0

??也許你的意思是:'WHERE ID = A.SomeColumn' –

+0

你(和OP)使用'A'作爲表別名和列別名(在不同的地方)。 –

+0

@ypercube,現在修復它。 – Johan

2

你可以重寫查詢這樣

SELECT Complex.A, (Another Sub Query WHERE ID = Complex.A) 
FROM TABLE 
CROSS JOIN ((Complex SubQuery) AS A) Complex 
0

另一種解決方案,您可以使用:

SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) 
FROM 
TABLE MAIN 
OUTER APPLY (SELECT (Complex SubQuery) AS A)