为行分配一个从1到X的数字然后循环 - 在SQL中

时间:2014-06-26 14:15:18

标签: sql tsql

假设您有一个包含ID列和几个文本列的表,并且您希望为每个表分配一个从1到4的数字。 这个数字在达到4之后会循环到1:

ID Num ...
 1   1 
 2   2
 3   3
 4   4
 5   1
 6   2
 7   3
 8   4
 9   1
 .   .
 .   .
 .   .

我一直试图弄清楚这个小谜题。我一直在尝试使用RANK()ROW_NUMBER(),但到目前为止还没有成功。

1 个答案:

答案 0 :(得分:4)

使用以下内容:

select 
   id,
   (ROW_NUMBER() OVER(order by id) - 1) % 4 + 1 As nr 
from 
   tbl