【发布时间】:2014-03-14 19:54:38
【问题描述】:
我需要在表列上每 4 条记录增加 +1,我尝试使用 ROW_NUM() 但我的肮脏解决方法没有意义。
这是我需要的:
Index PeriodID
1 1
1 2
1 3
1 4
2 5
2 6
2 7
2 8
PeriodID 是表“Periods”的主键(聚集索引),我听说过窗口函数 LAG() 和 LEAD() 但不确定我是否可以将这个概念应用于这种情况,以下语法是我的失败的恶作剧尝试:
选择 row_number() over (order by periodid)/4+1, 周期 从句号
我得到的结果:
Index PeriodID
1 1
1 2
1 3
2 4
2 5
2 6
2 7
3 8
我明白为什么会得到这个结果,但我想知道是否有内置的 T-SQL 函数可以帮助实现我的需要。
欢迎提出意见和建议
谢谢
【问题讨论】:
-
NTILE 几乎可以做到这一点,但对于不均匀的组,它会平衡它们,而不是在最后一组中留下尽可能小的数字。
标签: sql-server-2012 window-functions