我有来自 sql 语句的可变数量的结果,我想为每行分配一个数字(例如行数),但在每 8 行后重复一次。在这种情况下,我通常会进行分区,但我没有任何字段可以作为重置的基础。我认为模数是一个好方法,但我也无法让该方法发挥作用。我可以使用另一个 T-SQL 函数来实现此结果吗?
每当你想到“在 1 和 N 之间重复 row_numbers”时,你应该想到“模数”,所以你绝对走在正确的轨道上。
这是
((i + 1) % n) + 1
的一个非常标准的公式,其中 i
是行号。在 tsql 中重复 1 到 8 之间的行号时,将采用以下形式:
SELECT ((ROW_NUMBER() OVER (ORDER BY <your ordering column(s)>) -1) % 8) + 1 as repeating_row_number
FROM yourtable