0

現在のコンテキスト:クエリ結果のページング

row_numberのように、クエリで計算値を取得する方法があるかどうかを知る必要があります。これにより、特定の行数に対して次の新しい値が計算されます。

row_numberを使用すると、結果にID列の種類が生成されますが、指定された行の数に対してそれを生成する必要があります。このような:

1ページあたりの行数:3

RowNum, PageNum, Value
1, 1, rowa
2, 1, rowb
3, 1, rowc
4, 2, rowd
5, 2, rowe
6, 2, rowf
7, 3, rowg 
4

2 に答える 2

1

ランキング関数を使用します<partition_by_clause>。これは次のとおりです。

FROM句によって生成された結果セットを、ROW_NUMBER関数が適用されるパーティションに分割します。PARTITION BYの構文については、OVER句を参照してください。

ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)

WITH CTE
AS
(
   SELECT *,
     ROW_NUMBER() OVER(PARTITION BY PageNum
                       ORDER BY Id) AS  Rownumber
   FROM tablename
) 
...
于 2013-03-19T12:46:05.463 に答える
1

これは機能するはずです:

WITH CTE AS
(
   SELECT 
      RowNum = ROW_NUMBER()OVER (ORDER BY Value ASC),
      Value
   FROM 
      dbo.TableName
)
SELECT 
   RowNum,
   PageNum = ((RowNum - 1) / 3) + 1,
   Value
FROM 
   CTE
ORDER BY 
   RowNum ASC

デモ

もちろん、3はパラメータである必要があります。

于 2013-03-19T12:50:43.193 に答える