Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在选择查询中使用别名_Sql_Sql Server_Oracle - Fatal编程技术网

Sql 在选择查询中使用别名

Sql 在选择查询中使用别名,sql,sql-server,oracle,Sql,Sql Server,Oracle,我需要问一下如何在Select查询中使用Alias 我需要这个 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.som

我需要问一下如何在Select查询中使用Alias

我需要这个

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和WHERE子句中引用这样的别名,因为在执行SELECT或WHERE部分时,它们不会进行计算。

您也可以使用
having
子句,但是having子句不使用索引,如果可能,应该避免使用

您可以这样重写查询

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)

?? 也许你的意思是:
其中ID=A.SomeColumn
你(和OP)正在使用
A
作为表别名和列别名(在不同的地方)。我想答案是将
复杂子查询
标量表达式更改为表表达式,但很难调试我们看不到的代码。我同意你的看法。我需要使这个查询更有效率。
SELECT (Complex SubQuery) AS A, (Another Sub Query WHERE ID = A) 
FROM 
TABLE MAIN
OUTER APPLY (SELECT (Complex SubQuery) AS A)