答案 0 :(得分:1)
SQL表本质上是无序的。第1行和第4行之间没有区别,您提供的数据也是如此。您可以生成等效的结果集,但顺序可能不同。
简单的算术可以解决这个问题:
select a,
( row_number() over (order by a) + 2) / 3 ) as
from t
order by a, b, c;
更好的方法是使用b
列:
select a,
row_number() over (partition by b order by a) as c
from t
order by a, c;
答案 1 :(得分:0)
你可以使用如下的ntile:
Select *, ntile(2) over(order by (Select NULL)) from #data
您可以根据数据
提供任何其他有效的排序列,而不是(选择NULL)