SQL选择段
我正在使用SQLServer2008 我有一张有x行的桌子。我希望总是将x除以5,然后选择第三组记录 假设表中有100条记录: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
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
语句来更新这些行