SQL选择段

SQL选择段,sql,sql-server-2008,Sql,Sql Server 2008,我正在使用SQLServer2008 我有一张有x行的桌子。我希望总是将x除以5,然后选择第三组记录 假设表中有100条记录: 100 / 5 = 20 第三段将记录41至60 我将如何在SQL中计算和选择此第三段 谢谢。您可以使用 将有序分区中的行分配到指定数量的组中 例如: SELECT col1, col2, ..., coln FROM ( SELECT col1, col2, ..., coln, NTILE(5) OVER (ORDER BY

我正在使用SQLServer2008

我有一张有x行的桌子。我希望总是将x除以5,然后选择第三组记录

假设表中有100条记录:

100 / 5 = 20
第三段将记录41至60

我将如何在SQL中计算和选择此第三段

谢谢。

您可以使用

将有序分区中的行分配到指定数量的组中

例如:

SELECT col1, col2, ..., coln
FROM
(
    SELECT
        col1, col2, ..., coln,
        NTILE(5) OVER (ORDER BY id) AS groupno
    FROM yourtable
)
WHERE groupno = 3

这是排名函数的完美用法

基本上,您可以在CTE中定义查询,并向行中添加一个NTILE—一个从1到n的数字(参数为
NTILE
)。您可以按某一列对行进行排序,然后得到要查找的n组行,您可以对这些“组”数据中的任何一个进行操作

因此,请尝试以下方法:

;WITH SegmentedData AS
(
   SELECT  
      (list of your columns),
      GroupNo = NTILE(5) OVER (ORDER BY SomeColumnOfYours)
   FROM dbo.YourTable
)
SELECT * 
FROM SegmentedData
WHERE GroupNo = 3
当然,您也可以在CTE之后使用
UPDATE
语句来更新这些行