1

個別に適用することで結果が得られるSPを作成していますが、サーバー側のページングを実装したいので、次のような個別の結果にRow_numberを使用してみました。

    WITH CTE AS
    (
        SELECT ROW_NUMBER() OVER(ORDER BY tblA.TeamName DESC)
as Row,tblA.TeamId,tblA.TeamName,tblA.CompId,tblA.CompName,tblA.Title,tblA.Thumbnail,tblA.Rank,tblA.CountryId,tblA.CountryName
         FROM
         (
           --The table query starts with SELECT 
         )tblA
    )
        SELECT CTE.* FROM CTE
        WHERE CTE.Row BETWEEN @StartRowIndex AND @StartRowIndex+@NumRows-1
        ORDER BY CTE.CountryName

ただし、行には最初にRowNumberが割り当てられ、次に個別の行が適用されます。そのため、重複する値を取得しています。最初に個別の行を取得してから、同じ行番号を取得する方法です。

これに関する解決策はありますか?私は何かが足りないのですか?できるだけ早く答える必要があります。前もって感謝します!

4

1 に答える 1

1

ROW_NUMBER ステートメントに「partition by」を追加する必要はありませんか?

ROW_NUMBER() OVER(Partition by ___, ___, ORDER BY tblA.TeamName DESC) 

空白に、新しい行番号を作成する列名を配置します。重複は 1 以外の番号を受け取るため、個別の番号は必要ない場合があります。

一意の値を収集するには、ストアド プロシージャが 1 を含む行のみを取得するサブクエリを記述できます。

select * from
(
  your code
) where row = 1

それが役立つことを願っています。

なぜあなたがこれをしているのかわかりません:

WHERE CTE.Row BETWEEN @StartRowIndex AND @StartRowIndex+@NumRows-1 
于 2012-05-10T19:06:28.730 に答える