0

当前上下文:分页查询结果

我需要知道是否有某种方法可以在我的查询中获取计算值,例如 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 
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 回答