当前上下文:分页查询结果
我需要知道是否有某种方法可以在我的查询中获得计算值,例如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
答案 0 :(得分:1)
使用ranking function和<partition_by_clause>
,其中包含:
将FROM子句生成的结果集划分为 应用了ROW_NUMBER函数。对于PARTITION的语法 BY,见OVER Clause。
例如ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)
:
WITH CTE
AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY PageNum
ORDER BY Id) AS Rownumber
FROM tablename
)
...
答案 1 :(得分: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
应该是一个参数。