假设您在SQL Server中有一个嵌套SQL,您需要在外部选择中使用评估函数的结果:
SELECT FUN(...) as Result,
(SELECT count(*)
FROM Table
WHERE ... < Result
FROM Table
WHERE Condition
由于内部查询中存在“未知列结果”,因此无效。
我怎样才能改写它?
答案 0 :(得分:1)
如何以不同的方式嵌套:
SELECT
r.Result,
(SELECT COUNT(*) FROM Table WHERE ... < r.Result) AS SomeCount
FROM
(
SELECT FUN(...) AS Result, ... FROM Table WHERE Condition
) AS r
答案 1 :(得分:0)
如果您使用的是SQL Server 2005
,我会考虑这样的事情SELECT
...
FROM
(
SELECT FUN(...) AS Result, ... FROM Table WHERE Condition
) foo
CROSS APPLY
(
SELECT COUNT(*) AS SomeCount FROM Table WHERE ... < foo.Result
)
注意:您发布的查询通常可以使用SQL Server 2005 +中的窗口/排名函数来解决