在SQL中为每3行生成一个序列号

sar*_*ran 3 sql t-sql sql-server

我需要sequence number为每个three rows范围生成一个.这可以在没有迭代的情况下完成.

例:

sequence
--------
1
1
1
2
2
2
3
3
3
Run Code Online (Sandbox Code Playgroud)

Pரத*_*ீப் 17

用这个 Analytic function

SELECT ( ( Row_number()OVER(ORDER BY order_by_column ) - 1 ) / 3 ) + 1 seq_no,
              *
       FROM   tablename
Run Code Online (Sandbox Code Playgroud)

  • 相当巧妙地使用整数除法. (3认同)