2012-03-20 29 views
1

テーブル内の特定の値の行番号を取得するにはどうすればよいですか?これは私に行番号1をもたらし、私は1行しか返していないのでそれがわかりますが、どうすればいいでしょうか?SQL Serverの行番号の問題

私はので、私は戻りデータはのようになりたい、テーブル全体と比較し、特定のユーザーの「ランク」を知りたい:

Rank UserId 
326 c7f3b047-b5ee-4619-a409-8ff7b29179f8 

問合せ:

DECLARE @UserId uniqueidentifier 
SET @UserId='c7f3b047-b5ee-4619-a409-8ff7b29179f8' 

SELECT 
    ROW_NUMBER() OVER (ORDER BY Ratio desc) AS 'Rank', 
    ROW_NUMBER() OVER (ORDER BY RatioMonth desc) AS 'RankMonth', 
    ROW_NUMBER() OVER (ORDER BY RatioWeek desc) AS 'RankWeek', 
    UserMessData.UserId, 
    aspnet_Users.UserName, 
    Wins, Losses, Ratio, 
    WinsMonth, LossesMonth, RatioMonth, 
    WinsWeek, LossesWeek, RatioWeek 
FROM 
    UserMessData 
JOIN 
    aspnet_Users ON aspnet_Users.UserId = UserMessData.UserId 
WHERE 
    UserMessData.UserId IN (@UserId) 
ORDER BY 
    'Rank' ASC 

一部助けてください!

答えて

5

あなたは、全体のリスト内でのユーザの位置を見つける必要があり、その後、フィルタします:

DECLARE @UserId uniqueidentifier 
SET @UserId='c7f3b047-b5ee-4619-a409-8ff7b29179f8' 

select * 
from 
(
    SELECT ROW_NUMBER() OVER (ORDER BY Ratio desc) AS 'Rank', 
    ROW_NUMBER() OVER (ORDER BY RatioMonth desc) AS 'RankMonth', 
    ROW_NUMBER() OVER (ORDER BY RatioWeek desc) AS 'RankWeek', 
    UserMessData.UserId, 
    aspnet_Users.UserName, 
    Wins, Losses, 
    Ratio, 
    WinsMonth, 
    LossesMonth, 
    RatioMonth, 
    WinsWeek, 
    LossesWeek, 
    RatioWeek FROM UserMessData 
    JOIN aspnet_Users ON aspnet_Users.UserId=UserMessData.UserId 
) a 
WHERE a.UserId IN (@UserId) 
+1

が魅力のように働いた、感謝を! Immaは今寝ていて、私はURの答を受け入れる前に8分ほど残っています。私は明日それを修正します。そしてもう一度感謝します。 – parek