我正在努力争取逻辑。 想法是我需要为表的前10个记录分配值1,接下来的10个记录值应该是2,接下来的10个值应该是3,依此类推。
我不想使用循环概念,因为表是一个大表,并且用于更新值的嵌套循环将不会提高性能。我可能错了。
请在Oracle SQL中建议
答案 0 :(得分:1)
您需要一个指定排序的列(SQL表代表无序集)。之后,解决方案只是row_number()
,并带有一些算术:
select t.*,
(1 + trunc((row_number() over (order by orderingcol) - 1) / 10)) as grp
from t;
如果您确实想将此分配给表格,我建议您使用merge
。但是,计算查询中的值可能足以满足您的需要。