函数,变量和嵌套选择

时间:2010-12-08 10:22:56

标签: sql sql-server

假设您在SQL Server中有一个嵌套SQL,您需要在外部选择中使用评估函数的结果:

SELECT FUN(...) as Result,
       (SELECT count(*)
        FROM Table
        WHERE ... < Result
FROM Table
WHERE Condition

由于内部查询中存在“未知列结果”,因此无效。

我怎样才能改写它?

2 个答案:

答案 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 +中的窗口/排名函数来解决