我要問,如何能在SELECT查詢中使用別名,使用別名在選擇查詢
我需要這個
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE
我要問,如何能在SELECT查詢中使用別名,使用別名在選擇查詢
我需要這個
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) FROM TABLE
你不能做到這一點:
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
子句,但子句不使用索引,應儘可能避免。
??也許你的意思是:'WHERE ID = A.SomeColumn' –
你(和OP)使用'A'作爲表別名和列別名(在不同的地方)。 –
@ypercube,現在修復它。 – Johan
你可以重寫查詢這樣
SELECT Complex.A, (Another Sub Query WHERE ID = Complex.A)
FROM TABLE
CROSS JOIN ((Complex SubQuery) AS A) Complex
另一種解決方案,您可以使用:
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A)
FROM
TABLE MAIN
OUTER APPLY (SELECT (Complex SubQuery) AS A)
我懷疑答案是改變你的'復SubQuery'標量表達式爲表表達式,但很難調試我們看不到的代碼。 – onedaywhen
我同意你的意見。我需要使這個查詢有效。 – user960567