2012-05-11 6 views
0

hiscoreテーブルをページングする必要があります。私は2つのテーブルがあります。SQL Serverのページングの複雑なクエリ

gs_score_table

id (auto increment int) 
project_id (int) 
game_id (int) 
user_id (int) 
entry_date (datetime) 
score (int) 

ユーザー

id (auto increment int) 
user_name (varchar) 

を私が欲しいのはscores DESCによってhiscoresと注文リストのリストを取得することですが、私はいつもにエラーが発生します5行目(これはROW_NUMBER() OVER (ORDER BY total_score DESC) AS RowNumber)です。

無効な列名 'total_score'です。

誰でも助けてください。

SELECT TOP 50 
    * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY total_score DESC) AS RowNumber, 
     gs.user_id, 
     users.user_name, 
     SUM(gs.score) AS total_score, 
     (SELECT COUNT(gs2.id) FROM gs_score_table AS gs2 WHERE gs2.user_id = gs.user_id AND gs2.game_id = 1) AS games_played, 
     TotalRows=Count(*) OVER() 
    FROM 
     gs_score_table AS gs 
    INNER JOIN 
     users ON users.id = gs.user_id 
    WHERE 
     gs.project_id = 2 
     AND gs.game_id = 1 
     AND CAST(gs.entry_date AS date) BETWEEN '2012-04-23' AND '2012-04-23' 
    GROUP BY 
     gs.user_id, users.user_name) _tmpInlineView WHERE RowNumber >= 1 

答えて

1

「total_score」というエイリアスは、ROW_NUMBER ORDER BY句では使用できません。代わりに、必要があります:

ROW_NUMBER() OVER (ORDER BY SUM(gs.score) DESC) AS RowNumber 
+0

ありがとうございます。それでおしまい。 – Tjodalv