我要问,如何能在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