如何使用T-SQL to select N行每N行?

How to use T-SQL to select N rows every N rows?

我有几百行编号为SELECT ROW_NUMBER() OVER (ORDER BY LastName)的数据。

我需要在 selection 中每 3 行跳过其中 3 行。所以我需要 select 第 1、2、3 行...然后跳过第 4、5、6 行...然后包括第 7、8、9 行...然后跳过第 10、11、12 行... 。 等等等等。我需要能够动态地执行此操作,以便它可以随任何大小缩放 selection.

(我还需要得到上述结果的逆向结果,但假设我可以从提供的答案中推断出来。)

您可以使用子查询:

select t.*
from (select t.*, row_number() over (order by lastname) as seqnum
      from t
     ) t
where seqnum % 6 in (1, 2, 3);