在 5 行后 select 重置计数器

Reset counter in select after 5 rows

Table

Id  SomeValue
 1  Header1
 4  Header9
 7  Header5
 8  Header2 
 9  Header5 
12  Header4 
13  Header9 
14  Header7

预期输出

Id  SomeValue Counter
 1  Header1      1
 4  Header9      2
 7  Header5      3
 8  Header2      4
 9  Header5      5
12  Header4      1
13  Header9      2
14  Header7      3

当前输出:sqlfiddle。正如您在 fiddle 中看到的那样,计数器正常,但它不会在 5 项后重置计数。

您可以使用模运算符 (%) 来重置计数。您只需要明确处理零:

SELECT Id, SomeValue, CASE counter WHEN 0 THEN 5 ELSE counter END
FROM   (SELECT Id, SomeValue, ROW_NUMBER() OVER (ORDER BY Id) % 5 AS counter
        FROM   Table1) t

SQLFiddle 附上您的数据。