Sql 具有前X行之和的子查询

Sql 具有前X行之和的子查询,sql,sql-server,subquery,top-n,Sql,Sql Server,Subquery,Top N,我试图从一张表格中为每个人获得前5名的结果。我能够得到他们的最高成绩,但是我想要前5名的总和 Select Distinct r.LastName, r.FirstName , r.Class, r.BibNum, (Select top 1 r2.points from Results r2 where r2.season=r.Season and r2.Mountain=r.Mountain and r2.B

我试图从一张表格中为每个人获得前5名的结果。我能够得到他们的最高成绩,但是我想要前5名的总和

Select Distinct
        r.LastName, 
        r.FirstName , 
        r.Class,
        r.BibNum,
        (Select top 1 r2.points from Results r2 where r2.season=r.Season and r2.Mountain=r.Mountain and r2.Bibnum=r.bibnum Order By r2.Points Desc) as Points
from Results as r Where Season='2015' and Mountain='Ski Resort'
Order By Class, Points Desc
栏目:

    [Id] [int] IDENTITY(1,1) NOT NULL,
    [RaceNum] [int] NOT NULL,
    [BibNum] [int] NOT NULL,
    [FirstName] [nvarchar](max) NULL,
    [LastName] [nvarchar](max) NULL,
    [Sex] [nvarchar](max) NULL,
    [Class] [nvarchar](max) NULL,
    [Team] [nvarchar](max) NULL,
    [FirstRun] [nvarchar](max) NULL,
    [SecondRun] [nvarchar](max) NULL,
    [Best] [nvarchar](max) NULL,
    [Points] [int] NOT NULL,
    [Season] [int] NOT NULL,
    [Mountain] [nvarchar](max) NULL
您可以使用row_number获得前五行,然后按其他字段分组:

SELECT   LastName, 
         FirstName, 
         Class,
         BibNum,
         SUM(points) 
FROM     (SELECT  LastName, 
                  FirstName, 
                  Class,
                  BibNum,
                  points,
                  ROW_NUMBER() OVER (PARTITION BY LastName, 
                                                  FirstName, 
                                                  Class,
                                                  BibNum
                                     ORDER BY points DESC) AS rn
           FROM   results
           WHERE  Season='2015' and Mountain='Ski Resort'
         ) t
WHERE    rn <= 5
GROUP BY LastName, FirstName, Class, BibNum

我看不出你在哪里指定了一张桌子……我遗漏了什么吗?@BlueBird不,你是对的。短暂的考虑失误-编辑。