2011-07-11 52 views
2

查询执行后,如何知道特定用户的等级?这是在SQL Server 2005中。例如,我使用的查询是:如何在执行查询后获取记录的序列号?

CREATE PROCEDURE [dbo].[getmyRankinContest] 
@UserID int 
AS 
BEGIN 

    select userid, 
    from 
    invitecount 
    group by userid 
    order by sum(points) desc 
END 

@UserID是我UserID。如何在上面的代码中添加@UserID以获得我的排名?有什么建议吗?

在此先感谢..

回答

4

你可以尝试这样的事情:

CREATE PROCEDURE [dbo].[getmyRankinContest] @UserID int 
AS 
BEGIN 
    ;WITH CTE AS 
    (
     SELECT userId, RANK() OVER(ORDER BY Points DESC) Ranking 
     FROM ( SELECT userid, SUM(points) Points 
       FROM invitecount 
       GROUP BY userid) A 
    ) 
    SELECT * 
    FROM CTE 
    WHERE UserId = @UserID 
END 
+2

+1我转换你的答案为[Data.SE查询](http://data.stackexchange.com/stackoverflow/s/1593) –

+0

这是非常有用的,谢谢.....现在我知道我的排名是什么(虽然我宁愿不说) – Lamak

+0

谢谢拉玛克:)它像一个宝石。再次感谢。 – Remo