2010-12-08 19 views
0

はあなたが外で評価関数の結果を使用する必要のあるSQL Server内のネストされたSQLを持っていると言う選択しますので、ANの動作しません関数、変数およびネストされた選択

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

内部クエリの 'unknown column Result'

どのように書き換えることができますか?あなたが投稿したクエリは、多くの場合、解決することができます:

SELECT 
    r.Result, 
    (SELECT COUNT(*) FROM Table WHERE ... < r.Result) AS SomeCount 
FROM 
    (
    SELECT FUN(...) AS Result, ... FROM Table WHERE Condition 
) AS r 
+0

これは実際の生活の例ですか?一見すると、そのようなクエリを実行するはるかに良い方法があります。 – gbn

+0

私はそれについて確信しています。私はSQL Serverが全く新しいです。 –

答えて

1

SQL Server 2005+のウィンドウ/ランク付け関数を使用

+0

それはうまくいった。ありがとう。 –

+0

@Roberto:聞いてよかったです。フィールドに 'r.result'を比較するインデックスを付けるようにしてください。そうすれば、' COUNT(*) 'はすぐに戻ります。 – Tomalak

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 
) 

注検討したい:違った入れ子の事についてどう

関連する問題