我正在寻找一种方法,在计算X行数后将row_number()函数重置为1。
我希望我的数据看起来像这样。
例如,我想在3行后重置
YEAR RowNumber
-----------------
2000 1
2001 2
2002 3
2003 1
2004 2
2005 3
2006 1
2007 2
2008 3
2009 1
这可能吗?
答案 0 :(得分:2)
使用如下表达式:
(ROWNUMBER() OVER(ORDER BY YEAR)) % 3
基本上将除法后的余数除以3
答案 1 :(得分:1)
另一个答案很接近,但需要CASE
来解释Rownumber 3
select
RowNumber = case when row_number() over (order by a) % 3 = 0 then 3 else row_number() over (order by a) % 3 end
,a
from (values(1),(2),(3),(4),(5),(6),(7),(8)) as V(a)
所以在你的情况下
RowNumber = case when row_number() over (order by Year) % 3 = 0 then 3 else row_number() over (order by Year) % 3 end
或者,使用REPLACE
RowNumber = replace(row_number() over (order by Year) % 3,0,3)