当前上下文:分页查询结果
我需要知道是否有某种方法可以在我的查询中获取计算值,例如 row_number,它计算特定行数的下一个新值。
如果我使用 row_number ,它将在我的结果中的标识列上生成一种类型,我想要在指定的行数上生成它。像这样:
每页行数: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
当前上下文:分页查询结果
我需要知道是否有某种方法可以在我的查询中获取计算值,例如 row_number,它计算特定行数的下一个新值。
如果我使用 row_number ,它将在我的结果中的标识列上生成一种类型,我想要在指定的行数上生成它。像这样:
每页行数: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
使用排名函数, 和<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
)
...
这应该有效:
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
应该是一个参数。