Tsql 行号从最后一个数字开始?

Tsql 行号从最后一个数字开始?,tsql,row-number,Tsql,Row Number,通过使用行号,我通过分组来分配一些列。基本查询如下 update product set row_number= CONVERT(nvarchar(255), (ROW_NUMBER() over (partition by product.groupID order by product.groupID))) 但是现在有了新产品,它们的行号不为空。我无法重新分配所有行号。我想通过使用最后一个数字继续分配空值。 如何使用tsql实现这一点 基本上,根据下面的样本表。D应该是4,G应该是3,

通过使用行号,我通过分组来分配一些列。基本查询如下

update product set row_number= CONVERT(nvarchar(255),  (ROW_NUMBER() over (partition by product.groupID order by product.groupID))) 
但是现在有了新产品,它们的行号不为空。我无法重新分配所有行号。我想通过使用最后一个数字继续分配空值。 如何使用tsql实现这一点

基本上,根据下面的样本表。D应该是4,G应该是3,H应该是1

 product row_number groupID
  A         1         1
  B         2         1
  C         3         1
  D        null       1
  E         1         2
  F         2         2
  G        null       2
  H        null       3
试试这个:

列表为 **从product中选择ID,按groupid按分区上的行数按groupid排序作为rn 更新产品 设置dbo.product.row_number=CONVERTnvarchar255,list.rn
从list.ID=dbo.product.ID**

创建一个创建行号的CTE,然后用CTE的结果更新产品表

;with cte(product, groupId, newRowNumber)
as(
select product, groupId, ROW_NUMBER() over (partition by product.groupID order by product.groupID, product.product)
from product 
)

update product
set row_number = newRowNumber
from cte
where cte.groupId = product.groupId 
and cte.product = product.product
and product.row_number is null

按product.groupID分区按product.groupID排序?是否可以在后台重命名此表,使更新表单指向新表名,并将此表名替换为一个视图,该视图使用ROW\u NUMBEROVERPARTITION BY product.groupID ORDER BY product.product作为此ROW\u number列?@hamlet:我认为ORDER BY不会影响查询。但我相信,按党派划分是一种分组。我在谷歌上研究后发现了这种用法。不管怎么说,这项运动对我来说一开始很好。这与我原来的问题无关