1

このサイトをググって検索しましたが、何も機能していないようです。私が見つけたすべての構文が気に入らないようです。誰でも助けることができますか?作成した 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
4

2 に答える 2

1
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 IN ( 'QB', 'RB', 'WR', 'TE', 'K', 'D', 'TE' ) 
            BEGIN
            ;
                WITH    c AS ( SELECT   rn = ROW_NUMBER() OVER ( ORDER BY points DESC)
                                      , firstname
                               FROM     nflPassers_season
                               WHERE    position = @position
                                        AND points > 0
                             )
                    SELECT  firstname
                    FROM    c
                    WHERE   rn BETWEEN @toprange AND @bottomRange

            END

    END
于 2013-08-09T18:04:31.473 に答える
1

SQL 2012 より前の基本的なページネーション:

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY points DESC) AS RowRank
      FROM YourTable
      )AS sub
WHERE Rowrank BETWEEN @Variable1 AND @Variable2

いくつかのグループごと、つまりプレーヤーごとに結果の範囲が必要な場合は、次PARTITION BYのように追加できROW_NUMBER()ます。

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

PARTITION BYこれにより、節内の各項目のランキングが 1 から開始されます。

于 2013-08-09T18:04:31.687 に答える