5行后选择重置计数器

时间:2015-02-25 17:28:06

标签: sql sql-server sql-server-2008 select counter

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。正如你可以在小提琴中看到的那样,计数器很好,但它不会在5个项目后重置计数。

1 个答案:

答案 0 :(得分:3)

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

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附上您的数据。