Sql 正在尝试选择一个范围。。例如,10-20个顶级结果

Sql 正在尝试选择一个范围。。例如,10-20个顶级结果,sql,sql-server,Sql,Sql Server,我在谷歌上搜索了这个网站,但似乎什么都没用,似乎它不喜欢我发现的所有东西的语法。。虽然看起来很简单,但却令人沮丧。有人能帮忙吗?希望它使用我创建的topRange和bottomRange变量 ALTER PROCEDURE [dbo].[getTopFantasyPlayersByPositionSeason] @top int, @position varchar(3), @topRange int, @bottomRange int AS BEGIN

我在谷歌上搜索了这个网站,但似乎什么都没用,似乎它不喜欢我发现的所有东西的语法。。虽然看起来很简单,但却令人沮丧。有人能帮忙吗?希望它使用我创建的topRange和bottomRange变量

ALTER PROCEDURE [dbo].[getTopFantasyPlayersByPositionSeason]
    @top int,
    @position varchar(3),
    @topRange int,
    @bottomRange int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    IF @position = 'QB' OR @position = 'RB' OR @position = 'WR' OR @position = 'TE' OR @position = 'K' OR @position = 'D' OR @position = 'TE'
        BEGIN
            SELECT TOP (@top) *
            FROM nflPassers_season
            WHERE position=@position AND points > 0
            ORDER BY points DESC
        END

END

SQL 2012之前的基本分页:

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY points DESC) AS RowRank
      FROM YourTable
      )AS sub
WHERE Rowrank BETWEEN @Variable1 AND @Variable2
如果您希望每个分组的结果范围(即按玩家),您可以将
分区按
添加到
行编号()


这将使
分区依据
子句中的每个项目的排名从1开始。

您想在哪里使用它?您也没有这两个变量的值!!变量由用户输入。。希望这对您的提问有所帮助?但您希望从这些变量中获得什么?您使用的sql server版本可能存在重复?啊,我不知道分页这个术语…如果我知道,可能会发现答案更简单=\Thank将尝试此方法“sub”、“Rowrank”这些词会出错。。不是SQL的家伙对不起。。我应该在那里放些什么呢?这些只是别名,试着把
改为RowRank
改为sub
。。但是我需要检查一下位置和分数。。我尝试将其实现为RowRank位于topRange和bottomRange之间,position=position AND points>0,但由于某些原因,它现在是空白的。。hm(必须删除@符号)可能会在内部查询中包含另一个
WHERE
条件。嘿,斯图尔特,如果你说不在生产代码中使用列列表,我会在列列表下添加什么替换项?要从表中返回的列列表(例如,ID、玩家名称等)如果我知道要用什么来代替列_列表,因为它出错了,我真的想用它吗?(是的,我知道你说过不要输入生产代码……那么我应该输入什么呢?)刚刚看到你的答案,我会试着给你回复你的NFLPU赛季表中的栏目名称是什么?这就是我所说的列列表。使用表中的名称,而不是星号。
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY points DESC) AS RowRank
      FROM YourTable
      )AS sub
WHERE Rowrank BETWEEN @Variable1 AND @Variable2
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY SomeField ORDER BY points DESC) AS RowRank
      FROM YourTable
      WHERE position = @position
        AND points > 0
      ) AS sub
WHERE Rowrank BETWEEN @Variable1 AND @Variable2