插入期间的TSQL字段顺序增量

时间:2019-02-14 15:55:20

标签: sql-server tsql stored-procedures

我有一个简单的查询,该查询采用XML字符串并根据在UI上选择的内容插入一行或多行数据。

记录上有一个确定其顺序的字段,默认情况下,这些新字段将添加到表的末尾。

如果3条记录分别与ROUND的{​​{1}}存在,而我又通过XML字符串添加了3条记录,则这些记录应以OrderID作为其1,2,3。新集合中的哪个3个值获得哪个顺序无关紧要,只要它们继续递增即可。

这是我的尝试,如果有一个项目,但是有多个项目,4,5,6总是相同的,因此计数对orderID无效。

@newOrder

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ROW_NUMBER来生成新值:

INSERT INTO c.department (dID,DepartmentID,DepartmentOrder)
SELECT @dID,
       ParamValues.x1.value('departmentID[1]', 'int'),
       ISNULL(@newOrder,0)+ROW_NUMBER() OVER (ORDER BY ParamValues.x1)
FROM @departments.nodes('/departments/department') AS ParamValues(x1)

通过使用x1子句中的XML列ORDER BY,您可以指定DepartmentOrder应该按节点在xml中出现的方式进行排序。